mirror of https://git.ffmpeg.org/ffmpeg.git
libavformat/mux: Add ff_choose_chroma_location()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
d09321b68e
commit
a45cf639e6
|
@ -410,6 +410,11 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags);
|
||||||
*/
|
*/
|
||||||
AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision);
|
AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chooses a timebase for muxing the specified stream.
|
||||||
|
*/
|
||||||
|
enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate standard extradata for AVC-Intra based on width/height and field
|
* Generate standard extradata for AVC-Intra based on width/height and field
|
||||||
* order.
|
* order.
|
||||||
|
|
|
@ -115,6 +115,36 @@ AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precisio
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st)
|
||||||
|
{
|
||||||
|
AVCodecContext *avctx = st->codec;
|
||||||
|
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(avctx->pix_fmt);
|
||||||
|
|
||||||
|
if (avctx->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED)
|
||||||
|
return avctx->chroma_sample_location;
|
||||||
|
|
||||||
|
if (pix_desc) {
|
||||||
|
if (pix_desc->log2_chroma_h == 0) {
|
||||||
|
return AVCHROMA_LOC_TOPLEFT;
|
||||||
|
} else if (pix_desc->log2_chroma_w == 1 && pix_desc->log2_chroma_h == 1) {
|
||||||
|
if (avctx->field_order == AV_FIELD_UNKNOWN || avctx->field_order == AV_FIELD_PROGRESSIVE) {
|
||||||
|
switch (avctx->codec_id) {
|
||||||
|
case AV_CODEC_ID_MJPEG:
|
||||||
|
case AV_CODEC_ID_MPEG1VIDEO: return AVCHROMA_LOC_CENTER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (avctx->field_order == AV_FIELD_UNKNOWN || avctx->field_order != AV_FIELD_PROGRESSIVE) {
|
||||||
|
switch (avctx->codec_id) {
|
||||||
|
case AV_CODEC_ID_MPEG2VIDEO: return AVCHROMA_LOC_LEFT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return AVCHROMA_LOC_UNSPECIFIED;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int avformat_alloc_output_context2(AVFormatContext **avctx, AVOutputFormat *oformat,
|
int avformat_alloc_output_context2(AVFormatContext **avctx, AVOutputFormat *oformat,
|
||||||
const char *format, const char *filename)
|
const char *format, const char *filename)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue