diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index d1df5b4168..c7cea4e2e3 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -859,12 +859,48 @@ typedef struct AVFrame { int linesize[AV_NUM_DATA_POINTERS]; /** - * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. - * This isn't used by libavcodec unless the default get/release_buffer() is used. - * - encoding: - * - decoding: + * pointers to the data planes/channels. + * + * For video, this should simply point to data[]. + * + * For planar audio, each channel has a separate data pointer, and + * linesize[0] contains the size of each channel buffer. + * For packed audio, there is just one data pointer, and linesize[0] + * contains the total size of the buffer for all channels. + * + * Note: Both data and extended_data will always be set by get_buffer(), + * but for planar audio with more channels that can fit in data, + * extended_data must be used by the decoder in order to access all + * channels. + * + * encoding: unused + * decoding: set by AVCodecContext.get_buffer() */ - uint8_t *base[AV_NUM_DATA_POINTERS]; + uint8_t **extended_data; + + /** + * width and height of the video frame + * - encoding: unused + * - decoding: Read by user. + */ + int width, height; + + /** + * number of audio samples (per channel) described by this frame + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + int nb_samples; + + /** + * format of the frame, -1 if unknown or unset + * Values correspond to enum PixelFormat for video frames, + * enum AVSampleFormat for audio) + * - encoding: unused + * - decoding: Read by user. + */ + int format; + /** * 1 -> keyframe, 0-> not * - encoding: Set by libavcodec. @@ -879,6 +915,21 @@ typedef struct AVFrame { */ enum AVPictureType pict_type; + /** + * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. + * This isn't used by libavcodec unless the default get/release_buffer() is used. + * - encoding: + * - decoding: + */ + uint8_t *base[AV_NUM_DATA_POINTERS]; + + /** + * sample aspect ratio for the video frame, 0/1 if unknown\unspecified + * - encoding: unused + * - decoding: Read by user. + */ + AVRational sample_aspect_ratio; + /** * presentation timestamp in time_base units (time when frame should be shown to user) * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. @@ -887,6 +938,20 @@ typedef struct AVFrame { */ int64_t pts; + /** + * reordered pts from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + */ + int64_t pkt_pts; + + /** + * dts from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + */ + int64_t pkt_dts; + /** * picture number in bitstream order * - encoding: set by @@ -930,6 +995,11 @@ typedef struct AVFrame { */ int qstride; + /** + * + */ + int qscale_type; + /** * mbskip_table[mb]>=1 if MB didn't change * stride= mb_width = (width+15)>>4 @@ -961,12 +1031,19 @@ typedef struct AVFrame { uint32_t *mb_type; /** - * log2 of the size of the block which a single vector in motion_val represents: - * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) + * DCT coefficients * - encoding: unused * - decoding: Set by libavcodec. */ - uint8_t motion_subsample_log2; + short *dct_coeff; + + /** + * motion reference frame index + * the order in which these are stored can depend on the codec. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int8_t *ref_index[2]; /** * for some private data of the user @@ -998,11 +1075,6 @@ typedef struct AVFrame { */ int repeat_pict; - /** - * - */ - int qscale_type; - /** * The content of the picture is interlaced. * - encoding: Set by user. @@ -1017,13 +1089,6 @@ typedef struct AVFrame { */ int top_field_first; - /** - * Pan scan. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVPanScan *pan_scan; - /** * Tell user application that palette has changed from previous frame. * - encoding: ??? (no palette-enabled encoder yet) @@ -1039,19 +1104,11 @@ typedef struct AVFrame { int buffer_hints; /** - * DCT coefficients - * - encoding: unused - * - decoding: Set by libavcodec. - */ - short *dct_coeff; - - /** - * motion reference frame index - * the order in which these are stored can depend on the codec. + * Pan scan. * - encoding: Set by user. * - decoding: Set by libavcodec. */ - int8_t *ref_index[2]; + AVPanScan *pan_scan; /** * reordered opaque 64bit (generally an integer or a double precision float @@ -1073,20 +1130,6 @@ typedef struct AVFrame { */ void *hwaccel_picture_private; - /** - * reordered pts from the last AVPacket that has been input into the decoder - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_pts; - - /** - * dts from the last AVPacket that has been input into the decoder - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_dts; - /** * the AVCodecContext which ff_thread_get_buffer() was last called on * - encoding: Set by libavcodec. @@ -1102,54 +1145,12 @@ typedef struct AVFrame { void *thread_opaque; /** - * number of audio samples (per channel) described by this frame - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - int nb_samples; - - /** - * pointers to the data planes/channels. - * - * For video, this should simply point to data[]. - * - * For planar audio, each channel has a separate data pointer, and - * linesize[0] contains the size of each channel buffer. - * For packed audio, there is just one data pointer, and linesize[0] - * contains the total size of the buffer for all channels. - * - * Note: Both data and extended_data will always be set by get_buffer(), - * but for planar audio with more channels that can fit in data, - * extended_data must be used by the decoder in order to access all - * channels. - * - * encoding: unused - * decoding: set by AVCodecContext.get_buffer() - */ - uint8_t **extended_data; - - /** - * sample aspect ratio for the video frame, 0/1 if unknown\unspecified + * log2 of the size of the block which a single vector in motion_val represents: + * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) * - encoding: unused - * - decoding: Read by user. + * - decoding: Set by libavcodec. */ - AVRational sample_aspect_ratio; - - /** - * width and height of the video frame - * - encoding: unused - * - decoding: Read by user. - */ - int width, height; - - /** - * format of the frame, -1 if unknown or unset - * Values correspond to enum PixelFormat for video frames, - * enum AVSampleFormat for audio) - * - encoding: unused - * - decoding: Read by user. - */ - int format; + uint8_t motion_subsample_log2; } AVFrame; struct AVCodecInternal;