mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/mux: Move ff_choose_chroma_location to mxfenc, its only user
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
107bdd97a9
commit
5130bbb7ef
|
@ -765,11 +765,6 @@ int ff_is_intra_only(enum AVCodecID id);
|
||||||
*/
|
*/
|
||||||
enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags);
|
enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags);
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include "libavcodec/packet_internal.h"
|
#include "libavcodec/packet_internal.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
#include "libavutil/dict.h"
|
#include "libavutil/dict.h"
|
||||||
#include "libavutil/pixdesc.h"
|
|
||||||
#include "libavutil/timestamp.h"
|
#include "libavutil/timestamp.h"
|
||||||
#include "libavutil/avassert.h"
|
#include "libavutil/avassert.h"
|
||||||
#include "libavutil/internal.h"
|
#include "libavutil/internal.h"
|
||||||
|
@ -89,36 +88,6 @@ static void frac_add(FFFrac *f, int64_t incr)
|
||||||
f->num = num;
|
f->num = num;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st)
|
|
||||||
{
|
|
||||||
AVCodecParameters *par = st->codecpar;
|
|
||||||
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(par->format);
|
|
||||||
|
|
||||||
if (par->chroma_location != AVCHROMA_LOC_UNSPECIFIED)
|
|
||||||
return par->chroma_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 (par->field_order == AV_FIELD_UNKNOWN || par->field_order == AV_FIELD_PROGRESSIVE) {
|
|
||||||
switch (par->codec_id) {
|
|
||||||
case AV_CODEC_ID_MJPEG:
|
|
||||||
case AV_CODEC_ID_MPEG1VIDEO: return AVCHROMA_LOC_CENTER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (par->field_order == AV_FIELD_UNKNOWN || par->field_order != AV_FIELD_PROGRESSIVE) {
|
|
||||||
switch (par->codec_id) {
|
|
||||||
case AV_CODEC_ID_MPEG2VIDEO: return AVCHROMA_LOC_LEFT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return AVCHROMA_LOC_UNSPECIFIED;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int avformat_alloc_output_context2(AVFormatContext **avctx, const AVOutputFormat *oformat,
|
int avformat_alloc_output_context2(AVFormatContext **avctx, const AVOutputFormat *oformat,
|
||||||
const char *format, const char *filename)
|
const char *format, const char *filename)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2496,6 +2496,35 @@ static int mxf_init_timecode(AVFormatContext *s, AVStream *st, AVRational tbc)
|
||||||
return av_timecode_init(&mxf->tc, av_inv_q(tbc), 0, 0, s);
|
return av_timecode_init(&mxf->tc, av_inv_q(tbc), 0, 0, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum AVChromaLocation choose_chroma_location(AVFormatContext *s, AVStream *st)
|
||||||
|
{
|
||||||
|
AVCodecParameters *par = st->codecpar;
|
||||||
|
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(par->format);
|
||||||
|
|
||||||
|
if (par->chroma_location != AVCHROMA_LOC_UNSPECIFIED)
|
||||||
|
return par->chroma_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 (par->field_order == AV_FIELD_UNKNOWN || par->field_order == AV_FIELD_PROGRESSIVE) {
|
||||||
|
switch (par->codec_id) {
|
||||||
|
case AV_CODEC_ID_MJPEG:
|
||||||
|
case AV_CODEC_ID_MPEG1VIDEO: return AVCHROMA_LOC_CENTER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (par->field_order == AV_FIELD_UNKNOWN || par->field_order != AV_FIELD_PROGRESSIVE) {
|
||||||
|
switch (par->codec_id) {
|
||||||
|
case AV_CODEC_ID_MPEG2VIDEO: return AVCHROMA_LOC_LEFT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return AVCHROMA_LOC_UNSPECIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
static int mxf_init(AVFormatContext *s)
|
static int mxf_init(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
MXFContext *mxf = s->priv_data;
|
MXFContext *mxf = s->priv_data;
|
||||||
|
@ -2544,7 +2573,7 @@ static int mxf_init(AVFormatContext *s)
|
||||||
sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w;
|
sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w;
|
||||||
sc->v_chroma_sub_sample = 1 << pix_desc->log2_chroma_h;
|
sc->v_chroma_sub_sample = 1 << pix_desc->log2_chroma_h;
|
||||||
}
|
}
|
||||||
switch (ff_choose_chroma_location(s, st)) {
|
switch (choose_chroma_location(s, st)) {
|
||||||
case AVCHROMA_LOC_TOPLEFT: sc->color_siting = 0; break;
|
case AVCHROMA_LOC_TOPLEFT: sc->color_siting = 0; break;
|
||||||
case AVCHROMA_LOC_LEFT: sc->color_siting = 6; break;
|
case AVCHROMA_LOC_LEFT: sc->color_siting = 6; break;
|
||||||
case AVCHROMA_LOC_TOP: sc->color_siting = 1; break;
|
case AVCHROMA_LOC_TOP: sc->color_siting = 1; break;
|
||||||
|
|
Loading…
Reference in New Issue