Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Sun, Feb 11, 2018 at 11:50 AM, Diego Biurrunwrote: > On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > > libavcodec/version.h | 2 +- > > > > --- a/libavcodec/version.h > > +++ b/libavcodec/version.h > > @@ -28,7 +28,7 @@ > > > > #define LIBAVCODEC_VERSION_MAJOR 58 > > -#define LIBAVCODEC_VERSION_MINOR 8 > > +#define LIBAVCODEC_VERSION_MINOR 9 > > #define LIBAVCODEC_VERSION_MICRO 0 > > I guess we should decide what to do about bumping version when there > is no change to installed headers, e.g. when a decoder is added without > adding an AV_CODEC_ID. Anton has been saying that minor should not be > bumped in those cases and I think he is right. > IMO nothing wrong with bumping the minor version, but if not at least micro should be changed. -- Vittorio ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Sun, 11 Feb 2018 18:44:44 + Mark Thompsonwrote: > On 10/02/18 16:29, Luca Barbato wrote: > > On 10/02/2018 16:59, Diego Biurrun wrote: > >> Looks OK in general. > >> > >> On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > >>> --- /dev/null > >>> +++ b/libavcodec/libaom.c > >>> @@ -0,0 +1,90 @@ > >>> + > >>> +#define HIGH_DEPTH(fmt) \ > >>> + case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ > >>> + case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ > >>> + case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ > >>> + default: return AV_PIX_FMT_NONE; \ > >> > >> Move the switch statement to the next line for better readability please. > > > > Sure > > > >> > >>> +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) > >>> +{ > >>> + switch (img) { > >>> + case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > >>> + case AOM_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; > >>> + case AOM_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; > >>> + case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; > >>> + case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; > >>> + case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; > >>> + case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; > >>> + case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; > >>> + case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; > >>> + case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; > >>> + case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; > >>> + case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; > >>> + case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; > >>> + case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; > >>> + case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > >>> + case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; > >> > >> I'd break those lines. > > > > I can run uncrustify to break it, is that the outcome you'd expect? > > > >>> +/* case AOM_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16; > >>> + case AOM_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16; > >>> + case AOM_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16; */ > >> > >> Why is this commented out? > > > > I should just remove it, thanks for reminding me. > > > >>> +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) > >>> +{ > >>> + switch (pix) { > >>> + case AV_PIX_FMT_RGB24: return AOM_IMG_FMT_RGB24; > >>> + case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; > >>> + case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; > >>> + case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; > >>> + case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; > >>> + case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; > >>> + case AV_PIX_FMT_BGR24: return AOM_IMG_FMT_BGR24; > >>> + case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; > >>> + case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; > >>> + case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; > >>> + case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; > >>> + case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; > >>> + case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; > >>> + case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; > >>> + case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; > >>> + case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; > >>> + case AV_PIX_FMT_YUV420P10: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P10: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P10: return AOM_IMG_FMT_I44416; > >>> + case AV_PIX_FMT_YUV420P12: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P12: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P12: return AOM_IMG_FMT_I44416; > >> > >> same > > > > Ok. > > If you feel like tearing down the bikeshed and building a different one: I > think this would be nicer as a single table with the two functions reading > it, rather than two functions which duplicate a lot of the information. +1, this duplication is really not necessary. Ignore my previous two empty replies, that's due to my mail client being crap. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Sun, 11 Feb 2018 18:44:44 + Mark Thompsonwrote: > On 10/02/18 16:29, Luca Barbato wrote: > > On 10/02/2018 16:59, Diego Biurrun wrote: > >> Looks OK in general. > >> > >> On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > >>> --- /dev/null > >>> +++ b/libavcodec/libaom.c > >>> @@ -0,0 +1,90 @@ > >>> + > >>> +#define HIGH_DEPTH(fmt) \ > >>> + case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ > >>> + case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ > >>> + case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ > >>> + default: return AV_PIX_FMT_NONE; \ > >> > >> Move the switch statement to the next line for better readability please. > > > > Sure > > > >> > >>> +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) > >>> +{ > >>> + switch (img) { > >>> + case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > >>> + case AOM_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; > >>> + case AOM_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; > >>> + case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; > >>> + case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; > >>> + case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; > >>> + case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; > >>> + case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; > >>> + case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; > >>> + case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; > >>> + case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; > >>> + case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; > >>> + case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; > >>> + case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; > >>> + case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > >>> + case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; > >> > >> I'd break those lines. > > > > I can run uncrustify to break it, is that the outcome you'd expect? > > > >>> +/* case AOM_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16; > >>> + case AOM_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16; > >>> + case AOM_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16; */ > >> > >> Why is this commented out? > > > > I should just remove it, thanks for reminding me. > > > >>> +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) > >>> +{ > >>> + switch (pix) { > >>> + case AV_PIX_FMT_RGB24: return AOM_IMG_FMT_RGB24; > >>> + case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; > >>> + case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; > >>> + case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; > >>> + case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; > >>> + case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; > >>> + case AV_PIX_FMT_BGR24: return AOM_IMG_FMT_BGR24; > >>> + case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; > >>> + case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; > >>> + case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; > >>> + case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; > >>> + case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; > >>> + case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; > >>> + case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; > >>> + case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; > >>> + case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; > >>> + case AV_PIX_FMT_YUV420P10: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P10: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P10: return AOM_IMG_FMT_I44416; > >>> + case AV_PIX_FMT_YUV420P12: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P12: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P12: return AOM_IMG_FMT_I44416; > >> > >> same > > > > Ok. > > If you feel like tearing down the bikeshed and building a different one: I > think this would be nicer as a single table with the two functions reading > it, rather than two functions which duplicate a lot of the information. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Sun, 11 Feb 2018 18:44:44 + Mark Thompsonwrote: > On 10/02/18 16:29, Luca Barbato wrote: > > On 10/02/2018 16:59, Diego Biurrun wrote: > >> Looks OK in general. > >> > >> On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > >>> --- /dev/null > >>> +++ b/libavcodec/libaom.c > >>> @@ -0,0 +1,90 @@ > >>> + > >>> +#define HIGH_DEPTH(fmt) \ > >>> + case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ > >>> + case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ > >>> + case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ > >>> + default: return AV_PIX_FMT_NONE; \ > >> > >> Move the switch statement to the next line for better readability please. > > > > Sure > > > >> > >>> +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) > >>> +{ > >>> + switch (img) { > >>> + case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > >>> + case AOM_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; > >>> + case AOM_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; > >>> + case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; > >>> + case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; > >>> + case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; > >>> + case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; > >>> + case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; > >>> + case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; > >>> + case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; > >>> + case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; > >>> + case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; > >>> + case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; > >>> + case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; > >>> + case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > >>> + case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; > >> > >> I'd break those lines. > > > > I can run uncrustify to break it, is that the outcome you'd expect? > > > >>> +/* case AOM_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16; > >>> + case AOM_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16; > >>> + case AOM_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16; */ > >> > >> Why is this commented out? > > > > I should just remove it, thanks for reminding me. > > > >>> +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) > >>> +{ > >>> + switch (pix) { > >>> + case AV_PIX_FMT_RGB24: return AOM_IMG_FMT_RGB24; > >>> + case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; > >>> + case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; > >>> + case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; > >>> + case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; > >>> + case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; > >>> + case AV_PIX_FMT_BGR24: return AOM_IMG_FMT_BGR24; > >>> + case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; > >>> + case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; > >>> + case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; > >>> + case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; > >>> + case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; > >>> + case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; > >>> + case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; > >>> + case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; > >>> + case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; > >>> + case AV_PIX_FMT_YUV420P10: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P10: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P10: return AOM_IMG_FMT_I44416; > >>> + case AV_PIX_FMT_YUV420P12: return AOM_IMG_FMT_I42016; > >>> + case AV_PIX_FMT_YUV422P12: return AOM_IMG_FMT_I42216; > >>> + case AV_PIX_FMT_YUV444P12: return AOM_IMG_FMT_I44416; > >> > >> same > > > > Ok. > > If you feel like tearing down the bikeshed and building a different one: I > think this would be nicer as a single table with the two functions reading > it, rather than two functions which duplicate a lot of the information. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On 10/02/18 16:29, Luca Barbato wrote: > On 10/02/2018 16:59, Diego Biurrun wrote: >> Looks OK in general. >> >> On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: >>> --- /dev/null >>> +++ b/libavcodec/libaom.c >>> @@ -0,0 +1,90 @@ >>> + >>> +#define HIGH_DEPTH(fmt) \ >>> + case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ >>> + case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ >>> + case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ >>> + default: return AV_PIX_FMT_NONE; \ >> >> Move the switch statement to the next line for better readability please. > > Sure > >> >>> +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) >>> +{ >>> + switch (img) { >>> + case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; >>> + case AOM_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; >>> + case AOM_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; >>> + case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; >>> + case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; >>> + case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; >>> + case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; >>> + case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; >>> + case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; >>> + case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; >>> + case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; >>> + case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; >>> + case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; >>> + case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; >>> + case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; >>> + case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; >> >> I'd break those lines. > > I can run uncrustify to break it, is that the outcome you'd expect? > >>> +/* case AOM_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16; >>> + case AOM_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16; >>> + case AOM_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16; */ >> >> Why is this commented out? > > I should just remove it, thanks for reminding me. > >>> +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) >>> +{ >>> + switch (pix) { >>> + case AV_PIX_FMT_RGB24: return AOM_IMG_FMT_RGB24; >>> + case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; >>> + case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; >>> + case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; >>> + case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; >>> + case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; >>> + case AV_PIX_FMT_BGR24: return AOM_IMG_FMT_BGR24; >>> + case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; >>> + case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; >>> + case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; >>> + case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; >>> + case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; >>> + case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; >>> + case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; >>> + case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; >>> + case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; >>> + case AV_PIX_FMT_YUV420P10: return AOM_IMG_FMT_I42016; >>> + case AV_PIX_FMT_YUV422P10: return AOM_IMG_FMT_I42216; >>> + case AV_PIX_FMT_YUV444P10: return AOM_IMG_FMT_I44416; >>> + case AV_PIX_FMT_YUV420P12: return AOM_IMG_FMT_I42016; >>> + case AV_PIX_FMT_YUV422P12: return AOM_IMG_FMT_I42216; >>> + case AV_PIX_FMT_YUV444P12: return AOM_IMG_FMT_I44416; >> >> same > > Ok. If you feel like tearing down the bikeshed and building a different one: I think this would be nicer as a single table with the two functions reading it, rather than two functions which duplicate a lot of the information. (Or ignore this if you prefer how the bikeshed is currently made...) - Mark ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On 11/02/2018 17:50, Diego Biurrun wrote: On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: libavcodec/version.h | 2 +- --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 -#define LIBAVCODEC_VERSION_MINOR 8 +#define LIBAVCODEC_VERSION_MINOR 9 #define LIBAVCODEC_VERSION_MICRO 0 I guess we should decide what to do about bumping version when there is no change to installed headers, e.g. when a decoder is added without adding an AV_CODEC_ID. Anton has been saying that minor should not be bumped in those cases and I think he is right. I do not have opinion about it, locally amended to avoid the version bump. ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > libavcodec/version.h | 2 +- > > --- a/libavcodec/version.h > +++ b/libavcodec/version.h > @@ -28,7 +28,7 @@ > > #define LIBAVCODEC_VERSION_MAJOR 58 > -#define LIBAVCODEC_VERSION_MINOR 8 > +#define LIBAVCODEC_VERSION_MINOR 9 > #define LIBAVCODEC_VERSION_MICRO 0 I guess we should decide what to do about bumping version when there is no change to installed headers, e.g. when a decoder is added without adding an AV_CODEC_ID. Anton has been saying that minor should not be bumped in those cases and I think he is right. Diego ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On 10/02/2018 18:15, Diego Biurrun wrote: On Sat, Feb 10, 2018 at 05:29:52PM +0100, Luca Barbato wrote: On 10/02/2018 16:59, Diego Biurrun wrote: On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: --- /dev/null +++ b/libavcodec/libaom.c @@ -0,0 +1,90 @@ +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) +{ +switch (img) { +case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; +case AOM_IMG_FMT_RGB565:return AV_PIX_FMT_RGB565BE; +case AOM_IMG_FMT_RGB555:return AV_PIX_FMT_RGB555BE; +case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; +case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; +case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; +case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; +case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; +case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; +case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; +case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; +case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; +case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; +case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; +case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; +case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; I'd break those lines. I can run uncrustify to break it, is that the outcome you'd expect? That would do the trick, yes. --- /dev/null +++ b/libavcodec/libaomdec.c @@ -0,0 +1,137 @@ +static av_cold int aom_init(AVCodecContext *avctx, +const struct aom_codec_iface *iface) +{ +if (aom_codec_dec_init(>decoder, iface, , 0) != AOM_CODEC_OK) { +const char *error = aom_codec_error(>decoder); +av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder: %s\n", + error); +return AVERROR(EINVAL); These don't look like user-supplied values, so I think EINVAL is not the right error code. suggest one :) Never mind, these values are sort of user-supplied. +AVCodec ff_libaom_av1_decoder = { +.init = av1_init, +.close = aom_free, +.decode = aom_decode, Why av1_init and not aom_init? Ideally if we want to support av2 through libaom we'd just have to have a av2_init. That's a little bit too future-proof for my taste. If and when that day arrives, it's trivial to rename the function. Who knows, maybe there will not even be two init functions then.. Comments addressed, I'll push it tomorrow. lu ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On Sat, Feb 10, 2018 at 05:29:52PM +0100, Luca Barbato wrote: > On 10/02/2018 16:59, Diego Biurrun wrote: > > On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > > > --- /dev/null > > > +++ b/libavcodec/libaom.c > > > @@ -0,0 +1,90 @@ > > > +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) > > > +{ > > > +switch (img) { > > > +case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > > > +case AOM_IMG_FMT_RGB565:return AV_PIX_FMT_RGB565BE; > > > +case AOM_IMG_FMT_RGB555:return AV_PIX_FMT_RGB555BE; > > > +case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; > > > +case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; > > > +case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; > > > +case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; > > > +case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; > > > +case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; > > > +case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; > > > +case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; > > > +case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; > > > +case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; > > > +case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; > > > +case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > > > +case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; > > > > I'd break those lines. > > I can run uncrustify to break it, is that the outcome you'd expect? That would do the trick, yes. > > > --- /dev/null > > > +++ b/libavcodec/libaomdec.c > > > @@ -0,0 +1,137 @@ > > > +static av_cold int aom_init(AVCodecContext *avctx, > > > +const struct aom_codec_iface *iface) > > > +{ > > > +if (aom_codec_dec_init(>decoder, iface, , 0) != > > > AOM_CODEC_OK) { > > > +const char *error = aom_codec_error(>decoder); > > > +av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder: %s\n", > > > + error); > > > +return AVERROR(EINVAL); > > > > These don't look like user-supplied values, so I think EINVAL is not the > > right error code. > > suggest one :) Never mind, these values are sort of user-supplied. > > > +AVCodec ff_libaom_av1_decoder = { > > > +.init = av1_init, > > > +.close = aom_free, > > > +.decode = aom_decode, > > > > Why av1_init and not aom_init? > > Ideally if we want to support av2 through libaom we'd just have to have a > av2_init. That's a little bit too future-proof for my taste. If and when that day arrives, it's trivial to rename the function. Who knows, maybe there will not even be two init functions then.. Diego ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
On 10/02/2018 16:59, Diego Biurrun wrote: Looks OK in general. On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: --- /dev/null +++ b/libavcodec/libaom.c @@ -0,0 +1,90 @@ + +#define HIGH_DEPTH(fmt) \ +case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ +case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ +case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ +default: return AV_PIX_FMT_NONE; \ Move the switch statement to the next line for better readability please. Sure +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) +{ +switch (img) { +case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; +case AOM_IMG_FMT_RGB565:return AV_PIX_FMT_RGB565BE; +case AOM_IMG_FMT_RGB555:return AV_PIX_FMT_RGB555BE; +case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; +case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; +case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; +case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; +case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; +case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; +case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; +case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; +case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; +case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; +case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; +case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; +case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; I'd break those lines. I can run uncrustify to break it, is that the outcome you'd expect? +/*case AOM_IMG_FMT_I42016:return AV_PIX_FMT_YUV420P16; +case AOM_IMG_FMT_I42216:return AV_PIX_FMT_YUV422P16; +case AOM_IMG_FMT_I44416:return AV_PIX_FMT_YUV444P16; */ Why is this commented out? I should just remove it, thanks for reminding me. +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) +{ +switch (pix) { +case AV_PIX_FMT_RGB24:return AOM_IMG_FMT_RGB24; +case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; +case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; +case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; +case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; +case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; +case AV_PIX_FMT_BGR24:return AOM_IMG_FMT_BGR24; +case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; +case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; +case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; +case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; +case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; +case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; +case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; +case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; +case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; +case AV_PIX_FMT_YUV420P10:return AOM_IMG_FMT_I42016; +case AV_PIX_FMT_YUV422P10:return AOM_IMG_FMT_I42216; +case AV_PIX_FMT_YUV444P10:return AOM_IMG_FMT_I44416; +case AV_PIX_FMT_YUV420P12:return AOM_IMG_FMT_I42016; +case AV_PIX_FMT_YUV422P12:return AOM_IMG_FMT_I42216; +case AV_PIX_FMT_YUV444P12:return AOM_IMG_FMT_I44416; same Ok. --- /dev/null +++ b/libavcodec/libaom.h @@ -0,0 +1,31 @@ + +#ifndef AVCODEC_LIBAOM_H +#define AVCODEC_LIBAOM_H + +#include + +#include "libavutil/pixfmt.h" + +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth); +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix); + +#endif /* AVCODEC_LIBAOM_H */ Is encoding support planned? Otherwise splitting this into several files is kind of silly. I already have it, just I do not want to have people have an easy way to generate broken files. --- /dev/null +++ b/libavcodec/libaomdec.c @@ -0,0 +1,137 @@ +static av_cold int aom_init(AVCodecContext *avctx, +const struct aom_codec_iface *iface) +{ +if (aom_codec_dec_init(>decoder, iface, , 0) != AOM_CODEC_OK) { +const char *error = aom_codec_error(>decoder); +av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder: %s\n", + error); +return AVERROR(EINVAL); These don't look like user-supplied values, so I think EINVAL is not the right error code. suggest one :) +static int aom_decode(AVCodecContext *avctx, void *data, int *got_frame, + AVPacket *avpkt) +{ +*got_frame = 1; odd spacing +static av_cold int aom_free(AVCodecContext *avctx) Why not aom_close()? can be changed +AVCodec ff_libaom_av1_decoder = { +.init = av1_init, +.close = aom_free, +.decode = aom_decode, Why av1_init and not aom_init? Ideally if we want to support av2 through
Re: [libav-devel] [PATCH] Add AV1 video decoding support through libaom
Looks OK in general. On Fri, Feb 09, 2018 at 10:51:36AM +0100, Luca Barbato wrote: > --- /dev/null > +++ b/libavcodec/libaom.c > @@ -0,0 +1,90 @@ > + > +#define HIGH_DEPTH(fmt) \ > +case AOM_IMG_FMT_I ## fmt ## 16: switch (depth) { \ > +case 10: return AV_PIX_FMT_YUV ## fmt ## P10; \ > +case 12: return AV_PIX_FMT_YUV ## fmt ## P12; \ > +default: return AV_PIX_FMT_NONE; \ Move the switch statement to the next line for better readability please. > +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) > +{ > +switch (img) { > +case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > +case AOM_IMG_FMT_RGB565:return AV_PIX_FMT_RGB565BE; > +case AOM_IMG_FMT_RGB555:return AV_PIX_FMT_RGB555BE; > +case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; > +case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; > +case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; > +case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; > +case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; > +case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; > +case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; > +case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; > +case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; > +case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; > +case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; > +case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > +case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; I'd break those lines. > +/*case AOM_IMG_FMT_I42016:return AV_PIX_FMT_YUV420P16; > +case AOM_IMG_FMT_I42216:return AV_PIX_FMT_YUV422P16; > +case AOM_IMG_FMT_I44416:return AV_PIX_FMT_YUV444P16; */ Why is this commented out? > +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) > +{ > +switch (pix) { > +case AV_PIX_FMT_RGB24:return AOM_IMG_FMT_RGB24; > +case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; > +case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; > +case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; > +case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; > +case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; > +case AV_PIX_FMT_BGR24:return AOM_IMG_FMT_BGR24; > +case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; > +case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; > +case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; > +case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; > +case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; > +case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; > +case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; > +case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; > +case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; > +case AV_PIX_FMT_YUV420P10:return AOM_IMG_FMT_I42016; > +case AV_PIX_FMT_YUV422P10:return AOM_IMG_FMT_I42216; > +case AV_PIX_FMT_YUV444P10:return AOM_IMG_FMT_I44416; > +case AV_PIX_FMT_YUV420P12:return AOM_IMG_FMT_I42016; > +case AV_PIX_FMT_YUV422P12:return AOM_IMG_FMT_I42216; > +case AV_PIX_FMT_YUV444P12:return AOM_IMG_FMT_I44416; same > --- /dev/null > +++ b/libavcodec/libaom.h > @@ -0,0 +1,31 @@ > + > +#ifndef AVCODEC_LIBAOM_H > +#define AVCODEC_LIBAOM_H > + > +#include > + > +#include "libavutil/pixfmt.h" > + > +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth); > +aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix); > + > +#endif /* AVCODEC_LIBAOM_H */ Is encoding support planned? Otherwise splitting this into several files is kind of silly. > --- /dev/null > +++ b/libavcodec/libaomdec.c > @@ -0,0 +1,137 @@ > +static av_cold int aom_init(AVCodecContext *avctx, > +const struct aom_codec_iface *iface) > +{ > +if (aom_codec_dec_init(>decoder, iface, , 0) != > AOM_CODEC_OK) { > +const char *error = aom_codec_error(>decoder); > +av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder: %s\n", > + error); > +return AVERROR(EINVAL); These don't look like user-supplied values, so I think EINVAL is not the right error code. > +static int aom_decode(AVCodecContext *avctx, void *data, int *got_frame, > + AVPacket *avpkt) > +{ > +*got_frame = 1; odd spacing > +static av_cold int aom_free(AVCodecContext *avctx) Why not aom_close()? > +AVCodec ff_libaom_av1_decoder = { > +.init = av1_init, > +.close = aom_free, > +.decode = aom_decode, Why av1_init and not aom_init? Diego ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH] Add AV1 video decoding support through libaom
Signed-off-by: Diego BiurrunSigned-off-by: Luca Barbato --- Freshen to work with the current libaom. Changelog | 1 + configure | 4 ++ doc/general.texi | 10 libavcodec/Makefile| 2 + libavcodec/allcodecs.c | 1 + libavcodec/libaom.c| 90 libavcodec/libaom.h| 31 +++ libavcodec/libaomdec.c | 137 + libavcodec/version.h | 2 +- 9 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 libavcodec/libaom.c create mode 100644 libavcodec/libaom.h create mode 100644 libavcodec/libaomdec.c diff --git a/Changelog b/Changelog index 51c3f85a28..0d20cd47df 100644 --- a/Changelog +++ b/Changelog @@ -20,6 +20,7 @@ version : - Intel QSV-accelerated MJPEG encoding - NVIDIA CUVID-accelerated H.264 and HEVC decoding - Intel QSV-accelerated overlay filter +- AV1 Support through libaom version 12: diff --git a/configure b/configure index 9f84f88014..1bb9072da4 100755 --- a/configure +++ b/configure @@ -187,6 +187,7 @@ External library support: --enable-bzlib bzip2 compression [autodetect] --enable-frei0rvideo filtering plugins --enable-gnutlscrypto + --enable-libaomAV1 video encoding/decoding --enable-libbs2b Bauer stereophonic-to-binaural DSP --enable-libcdio audio CD input --enable-libdc1394 IEEE 1394/Firewire camera input @@ -1297,6 +1298,7 @@ EXTERNAL_LIBRARY_LIST=" avxsynth frei0r gnutls +libaom libbs2b libdc1394 libdcadec @@ -2311,6 +2313,7 @@ avisynth_deps="LoadLibrary" avxsynth_deps="libdl" avisynth_demuxer_deps_any="avisynth avxsynth" avisynth_demuxer_select="riffdec" +libaom_av1_decoder_deps="libaom" libdcadec_decoder_deps="libdcadec" libfaac_encoder_deps="libfaac" libfaac_encoder_select="audio_frame_queue" @@ -4602,6 +4605,7 @@ enabled cuvid && require cuvid cuviddec.h cuvidCreateDecoder -lnvcuv enabled frei0r&& require_header frei0r.h enabled gnutls&& require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init && check_lib gmp gmp.h mpz_export -lgmp +enabled libaom&& require_pkg_config libaom "aom >= 0.1.0" aom/aom_codec.h aom_codec_version enabled libbs2b && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec diff --git a/doc/general.texi b/doc/general.texi index 0c92761a49..e066b42187 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -16,6 +16,14 @@ for more formats. None of them are used by default, their use has to be explicitly requested by passing the appropriate flags to @command{./configure}. +@section Alliance for Open Media libaom + +Libav can make use of the libaom library for AV1 decoding. + +Go to @url{http://aomedia.org/} and follow the instructions for +installing the library. Then pass @code{--enable-libaom} to configure to +enable it. + @section OpenCORE and VisualOn libraries Spun off Google Android sources, OpenCore, VisualOn and Fraunhofer @@ -617,6 +625,8 @@ following image formats are supported: @item Autodesk Animator Flic video @tab @tab X @item Autodesk RLE @tab @tab X @tab fourcc: AASC +@item AV1@tab @tab E +@tab Supported through external library libaom @item AVS (Audio Video Standard) video @tab @tab X @tab Video encoding used by the Creature Shock game. @item Beam Software VB @tab @tab X diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 99969ac779..0b50a839bc 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -687,6 +687,7 @@ OBJS-$(CONFIG_TAK_DEMUXER) += tak.o OBJS-$(CONFIG_WEBM_MUXER) += mpeg4audio.o # external codec libraries +OBJS-$(CONFIG_LIBAOM_AV1_DECODER) += libaomdec.o libaom.o OBJS-$(CONFIG_LIBDCADEC_DECODER) += libdcadec.o dca.o OBJS-$(CONFIG_LIBFAAC_ENCODER)+= libfaac.o OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o @@ -814,6 +815,7 @@ SKIPHEADERS-$(CONFIG_CUVID)+= cuvid.h SKIPHEADERS-$(CONFIG_AMF) += amfenc.h SKIPHEADERS-$(CONFIG_D3D11VA) += d3d11va.h dxva2_internal.h SKIPHEADERS-$(CONFIG_DXVA2)+= dxva2.h dxva2_internal.h +SKIPHEADERS-$(CONFIG_LIBAOM) += libaom.h SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER) += libschroedinger.h SKIPHEADERS-$(CONFIG_LIBVPX) += libvpx.h SKIPHEADERS-$(CONFIG_NVENC)+= nvenc.h diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index efde5a2b0e..ec923cd511 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@