mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/avutil: Add AVColorSpace and AVColorRange to AVFrames
This also moves AVColorSpace and AVColorRange from avcodec to avutil Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
0092bcdf06
commit
a80e622924
@ -627,26 +627,6 @@ enum AVColorTransferCharacteristic{
|
|||||||
AVCOL_TRC_NB , ///< Not part of ABI
|
AVCOL_TRC_NB , ///< Not part of ABI
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AVColorSpace{
|
|
||||||
AVCOL_SPC_RGB = 0,
|
|
||||||
AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
|
|
||||||
AVCOL_SPC_UNSPECIFIED = 2,
|
|
||||||
AVCOL_SPC_FCC = 4,
|
|
||||||
AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
|
|
||||||
AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
|
|
||||||
AVCOL_SPC_SMPTE240M = 7,
|
|
||||||
AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
|
|
||||||
AVCOL_SPC_NB , ///< Not part of ABI
|
|
||||||
};
|
|
||||||
#define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG
|
|
||||||
|
|
||||||
enum AVColorRange{
|
|
||||||
AVCOL_RANGE_UNSPECIFIED = 0,
|
|
||||||
AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
|
|
||||||
AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
|
|
||||||
AVCOL_RANGE_NB , ///< Not part of ABI
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* X X 3 4 X X are luma samples,
|
* X X 3 4 X X are luma samples,
|
||||||
* 1 2 1-6 are possible chroma positions
|
* 1 2 1-6 are possible chroma positions
|
||||||
|
@ -643,6 +643,10 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
|
|||||||
frame->format = avctx->pix_fmt;
|
frame->format = avctx->pix_fmt;
|
||||||
if (!frame->sample_aspect_ratio.num)
|
if (!frame->sample_aspect_ratio.num)
|
||||||
frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
|
frame->sample_aspect_ratio = avctx->sample_aspect_ratio;
|
||||||
|
if (av_frame_get_colorspace(frame) == AVCOL_SPC_UNSPECIFIED)
|
||||||
|
av_frame_set_colorspace(frame, avctx->colorspace);
|
||||||
|
if (av_frame_get_color_range(frame) == AVCOL_RANGE_UNSPECIFIED)
|
||||||
|
av_frame_set_color_range(frame, avctx->color_range);
|
||||||
break;
|
break;
|
||||||
case AVMEDIA_TYPE_AUDIO:
|
case AVMEDIA_TYPE_AUDIO:
|
||||||
if (!frame->sample_rate)
|
if (!frame->sample_rate)
|
||||||
@ -964,6 +968,7 @@ void avcodec_get_frame_defaults(AVFrame *frame)
|
|||||||
frame->sample_aspect_ratio = (AVRational) {0, 1 };
|
frame->sample_aspect_ratio = (AVRational) {0, 1 };
|
||||||
frame->format = -1; /* unknown */
|
frame->format = -1; /* unknown */
|
||||||
frame->extended_data = frame->data;
|
frame->extended_data = frame->data;
|
||||||
|
av_frame_set_colorspace(frame, AVCOL_SPC_UNSPECIFIED);
|
||||||
}
|
}
|
||||||
|
|
||||||
AVFrame *avcodec_alloc_frame(void)
|
AVFrame *avcodec_alloc_frame(void)
|
||||||
|
@ -40,6 +40,8 @@ MAKE_ACCESSORS(AVFrame, frame, int, sample_rate)
|
|||||||
MAKE_ACCESSORS(AVFrame, frame, AVDictionary *, metadata)
|
MAKE_ACCESSORS(AVFrame, frame, AVDictionary *, metadata)
|
||||||
MAKE_ACCESSORS(AVFrame, frame, int, decode_error_flags)
|
MAKE_ACCESSORS(AVFrame, frame, int, decode_error_flags)
|
||||||
MAKE_ACCESSORS(AVFrame, frame, int, pkt_size)
|
MAKE_ACCESSORS(AVFrame, frame, int, pkt_size)
|
||||||
|
MAKE_ACCESSORS(AVFrame, frame, enum AVColorSpace, colorspace)
|
||||||
|
MAKE_ACCESSORS(AVFrame, frame, enum AVColorRange, color_range)
|
||||||
|
|
||||||
#define CHECK_CHANNELS_CONSISTENCY(frame) \
|
#define CHECK_CHANNELS_CONSISTENCY(frame) \
|
||||||
av_assert2(!(frame)->channel_layout || \
|
av_assert2(!(frame)->channel_layout || \
|
||||||
@ -89,6 +91,7 @@ static void get_frame_defaults(AVFrame *frame)
|
|||||||
frame->key_frame = 1;
|
frame->key_frame = 1;
|
||||||
frame->sample_aspect_ratio = (AVRational){ 0, 1 };
|
frame->sample_aspect_ratio = (AVRational){ 0, 1 };
|
||||||
frame->format = -1; /* unknown */
|
frame->format = -1; /* unknown */
|
||||||
|
frame->colorspace = AVCOL_SPC_UNSPECIFIED;
|
||||||
frame->extended_data = frame->data;
|
frame->extended_data = frame->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,6 +459,8 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
|
|||||||
dst->coded_picture_number = src->coded_picture_number;
|
dst->coded_picture_number = src->coded_picture_number;
|
||||||
dst->display_picture_number = src->display_picture_number;
|
dst->display_picture_number = src->display_picture_number;
|
||||||
dst->decode_error_flags = src->decode_error_flags;
|
dst->decode_error_flags = src->decode_error_flags;
|
||||||
|
dst->colorspace = src->colorspace;
|
||||||
|
dst->color_range = dst->color_range;
|
||||||
|
|
||||||
av_dict_copy(&dst->metadata, src->metadata, 0);
|
av_dict_copy(&dst->metadata, src->metadata, 0);
|
||||||
|
|
||||||
|
@ -30,6 +30,26 @@
|
|||||||
#include "rational.h"
|
#include "rational.h"
|
||||||
#include "samplefmt.h"
|
#include "samplefmt.h"
|
||||||
|
|
||||||
|
enum AVColorSpace{
|
||||||
|
AVCOL_SPC_RGB = 0,
|
||||||
|
AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
|
||||||
|
AVCOL_SPC_UNSPECIFIED = 2,
|
||||||
|
AVCOL_SPC_FCC = 4,
|
||||||
|
AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
|
||||||
|
AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
|
||||||
|
AVCOL_SPC_SMPTE240M = 7,
|
||||||
|
AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
|
||||||
|
AVCOL_SPC_NB , ///< Not part of ABI
|
||||||
|
};
|
||||||
|
#define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG
|
||||||
|
|
||||||
|
enum AVColorRange{
|
||||||
|
AVCOL_RANGE_UNSPECIFIED = 0,
|
||||||
|
AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
|
||||||
|
AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
|
||||||
|
AVCOL_RANGE_NB , ///< Not part of ABI
|
||||||
|
};
|
||||||
|
|
||||||
enum AVFrameSideDataType {
|
enum AVFrameSideDataType {
|
||||||
/**
|
/**
|
||||||
* The data is the AVPanScan struct defined in libavcodec.
|
* The data is the AVPanScan struct defined in libavcodec.
|
||||||
@ -432,6 +452,25 @@ typedef struct AVFrame {
|
|||||||
*/
|
*/
|
||||||
int pkt_size;
|
int pkt_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* YUV colorspace type.
|
||||||
|
* It must be accessed using av_frame_get_colorspace() and
|
||||||
|
* av_frame_set_colorspace().
|
||||||
|
* - encoding: Set by user
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
enum AVColorSpace colorspace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MPEG vs JPEG YUV range.
|
||||||
|
* It must be accessed using av_frame_get_color_range() and
|
||||||
|
* av_frame_set_color_range().
|
||||||
|
* - encoding: Set by user
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
enum AVColorRange color_range;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Not to be accessed directly from outside libavutil
|
* Not to be accessed directly from outside libavutil
|
||||||
*/
|
*/
|
||||||
@ -464,6 +503,10 @@ void av_frame_set_pkt_size(AVFrame *frame, int val);
|
|||||||
AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame);
|
AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame);
|
||||||
int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type);
|
int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type);
|
||||||
int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type);
|
int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type);
|
||||||
|
enum AVColorSpace av_frame_get_colorspace(const AVFrame *frame);
|
||||||
|
void av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val);
|
||||||
|
enum AVColorRange av_frame_get_color_range(const AVFrame *frame);
|
||||||
|
void av_frame_set_color_range(AVFrame *frame, enum AVColorRange val);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocate an AVFrame and set its fields to default values. The resulting
|
* Allocate an AVFrame and set its fields to default values. The resulting
|
||||||
|
@ -75,7 +75,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 52
|
#define LIBAVUTIL_VERSION_MAJOR 52
|
||||||
#define LIBAVUTIL_VERSION_MINOR 39
|
#define LIBAVUTIL_VERSION_MINOR 40
|
||||||
#define LIBAVUTIL_VERSION_MICRO 100
|
#define LIBAVUTIL_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user