The format is a per-frame property, having it in AVFrame simplify the operation of extraction of that information, since avoids the need to access the codec/stream context.tags/n0.8
@@ -13,6 +13,9 @@ libavutil: 2011-04-18 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2011-05-07 - xxxxxxx - lavc 53.5.0 - AVFrame | |||||
Add format field to AVFrame. | |||||
2011-05-07 - xxxxxxx - lavc 53.4.0 - AVFrame | 2011-05-07 - xxxxxxx - lavc 53.4.0 - AVFrame | ||||
Add width and height fields to AVFrame. | Add width and height fields to AVFrame. | ||||
@@ -1025,6 +1025,15 @@ typedef struct AVPanScan{ | |||||
* - decoding: Read by user.\ | * - decoding: Read by user.\ | ||||
*/\ | */\ | ||||
int width, height;\ | int width, height;\ | ||||
\ | |||||
/**\ | |||||
* format of the frame, -1 if unknown or unset\ | |||||
* It should be cast to the corresponding enum (enum PixelFormat\ | |||||
* for video, enum AVSampleFormat for audio)\ | |||||
* - encoding: unused\ | |||||
* - decoding: Read by user.\ | |||||
*/\ | |||||
int format;\ | |||||
#define FF_QSCALE_TYPE_MPEG1 0 | #define FF_QSCALE_TYPE_MPEG1 0 | ||||
@@ -456,6 +456,7 @@ void avcodec_get_frame_defaults(AVFrame *pic){ | |||||
pic->pkt_pos = -1; | pic->pkt_pos = -1; | ||||
pic->key_frame= 1; | pic->key_frame= 1; | ||||
pic->sample_aspect_ratio = (AVRational){0, 1}; | pic->sample_aspect_ratio = (AVRational){0, 1}; | ||||
pic->format = -1; /* unknown */ | |||||
} | } | ||||
AVFrame *avcodec_alloc_frame(void){ | AVFrame *avcodec_alloc_frame(void){ | ||||
@@ -743,6 +744,8 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi | |||||
picture->width = avctx->width; | picture->width = avctx->width; | ||||
if (!picture->height) | if (!picture->height) | ||||
picture->height = avctx->height; | picture->height = avctx->height; | ||||
if (picture->format == PIX_FMT_NONE) | |||||
picture->format = avctx->pix_fmt; | |||||
} | } | ||||
emms_c(); //needed to avoid an emms_c() call before every return; | emms_c(); //needed to avoid an emms_c() call before every return; | ||||
@@ -21,7 +21,7 @@ | |||||
#define AVCODEC_VERSION_H | #define AVCODEC_VERSION_H | ||||
#define LIBAVCODEC_VERSION_MAJOR 53 | #define LIBAVCODEC_VERSION_MAJOR 53 | ||||
#define LIBAVCODEC_VERSION_MINOR 4 | |||||
#define LIBAVCODEC_VERSION_MINOR 5 | |||||
#define LIBAVCODEC_VERSION_MICRO 0 | #define LIBAVCODEC_VERSION_MICRO 0 | ||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
@@ -104,6 +104,7 @@ int av_vsrc_buffer_add_frame2(AVFilterContext *buffer_filter, AVFrame *frame, | |||||
memcpy(c->frame.linesize, frame->linesize, sizeof(frame->linesize)); | memcpy(c->frame.linesize, frame->linesize, sizeof(frame->linesize)); | ||||
c->frame.width = frame->width; | c->frame.width = frame->width; | ||||
c->frame.height = frame->height; | c->frame.height = frame->height; | ||||
c->frame.format = frame->format; | |||||
c->frame.interlaced_frame= frame->interlaced_frame; | c->frame.interlaced_frame= frame->interlaced_frame; | ||||
c->frame.top_field_first = frame->top_field_first; | c->frame.top_field_first = frame->top_field_first; | ||||
c->frame.key_frame = frame->key_frame; | c->frame.key_frame = frame->key_frame; | ||||