automatic pixel format selection
Originally committed as revision 3131 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4a1b9ba0dd
commit
fcee016467
12
ffmpeg.c
12
ffmpeg.c
@ -2744,6 +2744,7 @@ static void opt_output_file(const char *filename)
|
|||||||
} else {
|
} else {
|
||||||
char *p;
|
char *p;
|
||||||
int i;
|
int i;
|
||||||
|
AVCodec *codec;
|
||||||
|
|
||||||
codec_id = file_oformat->video_codec;
|
codec_id = file_oformat->video_codec;
|
||||||
if (video_codec_id != CODEC_ID_NONE)
|
if (video_codec_id != CODEC_ID_NONE)
|
||||||
@ -2761,6 +2762,17 @@ static void opt_output_file(const char *filename)
|
|||||||
video_enc->sample_aspect_ratio = av_d2q(frame_aspect_ratio*frame_height/frame_width, 255);
|
video_enc->sample_aspect_ratio = av_d2q(frame_aspect_ratio*frame_height/frame_width, 255);
|
||||||
video_enc->pix_fmt = frame_pix_fmt;
|
video_enc->pix_fmt = frame_pix_fmt;
|
||||||
|
|
||||||
|
codec = avcodec_find_encoder(codec_id);
|
||||||
|
if(codec && codec->pix_fmts){
|
||||||
|
const enum PixelFormat *p= codec->pix_fmts;
|
||||||
|
for(; *p!=-1; p++){
|
||||||
|
if(*p == video_enc->pix_fmt)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(*p == -1)
|
||||||
|
video_enc->pix_fmt = codec->pix_fmts[0];
|
||||||
|
}
|
||||||
|
|
||||||
if (!intra_only)
|
if (!intra_only)
|
||||||
video_enc->gop_size = gop_size;
|
video_enc->gop_size = gop_size;
|
||||||
else
|
else
|
||||||
|
@ -1658,6 +1658,7 @@ typedef struct AVCodec {
|
|||||||
struct AVCodec *next;
|
struct AVCodec *next;
|
||||||
void (*flush)(AVCodecContext *);
|
void (*flush)(AVCodecContext *);
|
||||||
const AVRational *supported_framerates; ///array of supported framerates, or NULL if any, array is terminated by {0,0}
|
const AVRational *supported_framerates; ///array of supported framerates, or NULL if any, array is terminated by {0,0}
|
||||||
|
const enum PixelFormat *pix_fmts; ///array of supported pixel formats, or NULL if unknown, array is terminanted by -1
|
||||||
} AVCodec;
|
} AVCodec;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1933,6 +1933,7 @@ AVCodec svq1_decoder = {
|
|||||||
svq1_decode_frame,
|
svq1_decode_frame,
|
||||||
CODEC_CAP_DR1,
|
CODEC_CAP_DR1,
|
||||||
.flush= ff_mpeg_flush,
|
.flush= ff_mpeg_flush,
|
||||||
|
.pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV410P, -1},
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_ENCODERS
|
#ifdef CONFIG_ENCODERS
|
||||||
@ -1945,6 +1946,7 @@ AVCodec svq1_encoder = {
|
|||||||
svq1_encode_init,
|
svq1_encode_init,
|
||||||
svq1_encode_frame,
|
svq1_encode_frame,
|
||||||
svq1_encode_end,
|
svq1_encode_end,
|
||||||
|
.pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV410P, -1},
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //CONFIG_ENCODERS
|
#endif //CONFIG_ENCODERS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user