ffmpeg | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Fri Dec 19 19:15:07 2014 +0200| [57b6704ecd0f56d6a3092e448687cfd837bb0ac1] | committer: Anton Khirnov
avcodec: add AVCodecContext.sw_pix_fmt This carries the pixel format that would be used if it were not for hardware acceleration. This is equal to AVCodecContext.pix_fmt if hardware acceleration is not in use. Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=57b6704ecd0f56d6a3092e448687cfd837bb0ac1 --- doc/APIchanges | 3 +++ libavcodec/avcodec.h | 7 +++++++ libavcodec/utils.c | 15 +++++++++++---- libavcodec/version.h | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 3d1b72f..49e43f4 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2014-08-09 API changes, most recent first: +201x-xx-xx - xxxxxxx - lavc 56.8.0 - avcodec.h + Add AVCodecContext.sw_pix_fmt. + 2014-11-xx - xxxxxxx - lavf 56.06.3 - avformat.h Add AVFormatContext.avoid_negative_ts. diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 7df64ae..c998ee4 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2800,6 +2800,13 @@ typedef struct AVCodecContext { * - encoding: unused */ AVRational framerate; + + /** + * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. + * - encoding: unused. + * - decoding: Set by libavcodec before calling get_format() + */ + enum AVPixelFormat sw_pix_fmt; } AVCodecContext; /** diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 8cbd47b..fcc7dde 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -665,10 +665,13 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) if (ret < 0) return ret; - if (hwaccel && hwaccel->alloc_frame) { - ret = hwaccel->alloc_frame(avctx, frame); - goto end; - } + if (hwaccel) { + if (hwaccel->alloc_frame) { + ret = hwaccel->alloc_frame(avctx, frame); + goto end; + } + } else + avctx->sw_pix_fmt = avctx->pix_fmt; #if FF_API_GET_BUFFER FF_DISABLE_DEPRECATION_WARNINGS @@ -933,6 +936,10 @@ int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt) while (fmt[n] != AV_PIX_FMT_NONE) ++n; + av_assert0(n >= 1); + avctx->sw_pix_fmt = fmt[n - 1]; + av_assert2(!is_hwaccel_pix_fmt(avctx->sw_pix_fmt)); + choices = av_malloc_array(n + 1, sizeof(*choices)); if (!choices) return AV_PIX_FMT_NONE; diff --git a/libavcodec/version.h b/libavcodec/version.h index f51c9d7..5d8f9a1 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 56 -#define LIBAVCODEC_VERSION_MINOR 7 +#define LIBAVCODEC_VERSION_MINOR 8 #define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog