Skip to content

Commit a59e857

Browse files
authored
more yuv wrappers (#87)
1 parent 68167af commit a59e857

File tree

2 files changed

+375
-30
lines changed

2 files changed

+375
-30
lines changed

api/video/yuv_helper.cc

Lines changed: 215 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
#include "yuv_helper.h"
1818

1919
#include "libyuv/convert.h"
20+
#include "libyuv/convert_argb.h"
21+
#include "libyuv/convert_from_argb.h"
22+
#include "libyuv/row.h"
2023
#include "third_party/libyuv/include/libyuv.h"
2124
#include "video_rotation.h"
2225

@@ -60,23 +63,6 @@ int I420ToNV12(const uint8_t* src_y,
6063
dst_stride_uv, width, height);
6164
}
6265

63-
int NV12ToI420(const uint8_t* src_y,
64-
int src_stride_y,
65-
const uint8_t* src_uv,
66-
int src_stride_uv,
67-
uint8_t* dst_y,
68-
int dst_stride_y,
69-
uint8_t* dst_u,
70-
int dst_stride_u,
71-
uint8_t* dst_v,
72-
int dst_stride_v,
73-
int width,
74-
int height) {
75-
return libyuv::NV12ToI420(src_y, src_stride_y, src_uv, src_stride_uv, dst_y,
76-
dst_stride_y, dst_u, dst_stride_u, dst_v,
77-
dst_stride_v, width, height);
78-
}
79-
8066
int I420ToARGB(const uint8_t* src_y,
8167
int src_stride_y,
8268
const uint8_t* src_u,
@@ -215,4 +201,216 @@ int ARGBToRGB24(const uint8_t* src_argb,
215201
dst_stride_rgb24, width, height);
216202
}
217203

204+
int NV12ToI420(const uint8_t* src_y,
205+
int src_stride_y,
206+
const uint8_t* src_uv,
207+
int src_stride_uv,
208+
uint8_t* dst_y,
209+
int dst_stride_y,
210+
uint8_t* dst_u,
211+
int dst_stride_u,
212+
uint8_t* dst_v,
213+
int dst_stride_v,
214+
int width,
215+
int height) {
216+
return libyuv::NV12ToI420(src_y, src_stride_y, src_uv, src_stride_uv, dst_y,
217+
dst_stride_y, dst_u, dst_stride_u, dst_v,
218+
dst_stride_v, width, height);
219+
}
220+
221+
int I444ToI420(const uint8_t* src_y,
222+
int src_stride_y,
223+
const uint8_t* src_u,
224+
int src_stride_u,
225+
const uint8_t* src_v,
226+
int src_stride_v,
227+
uint8_t* dst_y,
228+
int dst_stride_y,
229+
uint8_t* dst_u,
230+
int dst_stride_u,
231+
uint8_t* dst_v,
232+
int dst_stride_v,
233+
int width,
234+
int height) {
235+
return libyuv::I444ToI420(src_y, src_stride_y, src_u, src_stride_u, src_v,
236+
src_stride_v, dst_y, dst_stride_y, dst_u,
237+
dst_stride_u, dst_v, dst_stride_v, width, height);
238+
}
239+
240+
int I422ToI420(const uint8_t* src_y,
241+
int src_stride_y,
242+
const uint8_t* src_u,
243+
int src_stride_u,
244+
const uint8_t* src_v,
245+
int src_stride_v,
246+
uint8_t* dst_y,
247+
int dst_stride_y,
248+
uint8_t* dst_u,
249+
int dst_stride_u,
250+
uint8_t* dst_v,
251+
int dst_stride_v,
252+
int width,
253+
int height) {
254+
return libyuv::I422ToI420(src_y, src_stride_y, src_u, src_stride_u, src_v,
255+
src_stride_v, dst_y, dst_stride_y, dst_u,
256+
dst_stride_u, dst_v, dst_stride_v, width, height);
257+
}
258+
259+
int I010ToI420(const uint16_t* src_y,
260+
int src_stride_y,
261+
const uint16_t* src_u,
262+
int src_stride_u,
263+
const uint16_t* src_v,
264+
int src_stride_v,
265+
uint8_t* dst_y,
266+
int dst_stride_y,
267+
uint8_t* dst_u,
268+
int dst_stride_u,
269+
uint8_t* dst_v,
270+
int dst_stride_v,
271+
int width,
272+
int height) {
273+
return libyuv::I010ToI420(src_y, src_stride_y, src_u, src_stride_u, src_v,
274+
src_stride_v, dst_y, dst_stride_y, dst_u,
275+
dst_stride_u, dst_v, dst_stride_v, width, height);
276+
}
277+
278+
int NV12ToARGB(const uint8_t* src_y,
279+
int src_stride_y,
280+
const uint8_t* src_uv,
281+
int src_stride_uv,
282+
uint8_t* dst_argb,
283+
int dst_stride_argb,
284+
int width,
285+
int height) {
286+
return libyuv::NV12ToARGB(src_y, src_stride_y, src_uv, src_stride_uv,
287+
dst_argb, dst_stride_argb, width, height);
288+
}
289+
290+
int NV12ToABGR(const uint8_t* src_y,
291+
int src_stride_y,
292+
const uint8_t* src_uv,
293+
int src_stride_uv,
294+
uint8_t* dst_abgr,
295+
int dst_stride_abgr,
296+
int width,
297+
int height) {
298+
return libyuv::NV12ToABGR(src_y, src_stride_y, src_uv, src_stride_uv,
299+
dst_abgr, dst_stride_abgr, width, height);
300+
}
301+
302+
int I444ToARGB(const uint8_t* src_y,
303+
int src_stride_y,
304+
const uint8_t* src_u,
305+
int src_stride_u,
306+
const uint8_t* src_v,
307+
int src_stride_v,
308+
uint8_t* dst_abgr,
309+
int dst_stride_abgr,
310+
int width,
311+
int height) {
312+
return libyuv::I444ToARGB(src_y, src_stride_y, src_u, src_stride_u, src_v,
313+
src_stride_v, dst_abgr, dst_stride_abgr, width,
314+
height);
315+
}
316+
317+
int I444ToABGR(const uint8_t* src_y,
318+
int src_stride_y,
319+
const uint8_t* src_u,
320+
int src_stride_u,
321+
const uint8_t* src_v,
322+
int src_stride_v,
323+
uint8_t* dst_abgr,
324+
int dst_stride_abgr,
325+
int width,
326+
int height) {
327+
return libyuv::I444ToABGR(src_y, src_stride_y, src_u, src_stride_u, src_v,
328+
src_stride_v, dst_abgr, dst_stride_abgr, width,
329+
height);
330+
}
331+
332+
int I422ToARGB(const uint8_t* src_y,
333+
int src_stride_y,
334+
const uint8_t* src_u,
335+
int src_stride_u,
336+
const uint8_t* src_v,
337+
int src_stride_v,
338+
uint8_t* dst_argb,
339+
int dst_stride_argb,
340+
int width,
341+
int height) {
342+
return libyuv::I422ToARGB(src_y, src_stride_y, src_u, src_stride_u, src_v,
343+
src_stride_v, dst_argb, dst_stride_argb, width,
344+
height);
345+
}
346+
347+
int I422ToABGR(const uint8_t* src_y,
348+
int src_stride_y,
349+
const uint8_t* src_u,
350+
int src_stride_u,
351+
const uint8_t* src_v,
352+
int src_stride_v,
353+
uint8_t* dst_abgr,
354+
int dst_stride_abgr,
355+
int width,
356+
int height) {
357+
return libyuv::I422ToABGR(src_y, src_stride_y, src_u, src_stride_u, src_v,
358+
src_stride_v, dst_abgr, dst_stride_abgr, width,
359+
height);
360+
}
361+
362+
int I010ToARGB(const uint16_t* src_y,
363+
int src_stride_y,
364+
const uint16_t* src_u,
365+
int src_stride_u,
366+
const uint16_t* src_v,
367+
int src_stride_v,
368+
uint8_t* dst_argb,
369+
int dst_stride_argb,
370+
int width,
371+
int height) {
372+
return libyuv::I010ToARGB(src_y, src_stride_y, src_u, src_stride_u, src_v,
373+
src_stride_v, dst_argb, dst_stride_argb, width,
374+
height);
375+
}
376+
377+
int I010ToABGR(const uint16_t* src_y,
378+
int src_stride_y,
379+
const uint16_t* src_u,
380+
int src_stride_u,
381+
const uint16_t* src_v,
382+
int src_stride_v,
383+
uint8_t* dst_abgr,
384+
int dst_stride_abgr,
385+
int width,
386+
int height) {
387+
return libyuv::I010ToABGR(src_y, src_stride_y, src_u, src_stride_u, src_v,
388+
src_stride_v, dst_abgr, dst_stride_abgr, width,
389+
height);
390+
}
391+
392+
int ABGRToNV12(const uint8_t* src_abgr,
393+
int src_stride_abgr,
394+
uint8_t* dst_y,
395+
int dst_stride_y,
396+
uint8_t* dst_uv,
397+
int dst_stride_uv,
398+
int width,
399+
int height) {
400+
return libyuv::ABGRToNV12(src_abgr, src_stride_abgr, dst_y, dst_stride_y,
401+
dst_uv, dst_stride_uv, width, height);
402+
}
403+
404+
int ARGBToNV12(const uint8_t* src_argb,
405+
int src_stride_argb,
406+
uint8_t* dst_y,
407+
int dst_stride_y,
408+
uint8_t* dst_uv,
409+
int dst_stride_uv,
410+
int width,
411+
int height) {
412+
return libyuv::ARGBToNV12(src_argb, src_stride_argb, dst_y, dst_stride_y,
413+
dst_uv, dst_stride_uv, width, height);
414+
}
415+
218416
} // namespace webrtc

0 commit comments

Comments
 (0)