mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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 {
|
||||
char *p;
|
||||
int i;
|
||||
AVCodec *codec;
|
||||
|
||||
codec_id = file_oformat->video_codec;
|
||||
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->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)
|
||||
video_enc->gop_size = gop_size;
|
||||
else
|
||||
|
@ -1658,6 +1658,7 @@ typedef struct AVCodec {
|
||||
struct AVCodec *next;
|
||||
void (*flush)(AVCodecContext *);
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@ -1933,6 +1933,7 @@ AVCodec svq1_decoder = {
|
||||
svq1_decode_frame,
|
||||
CODEC_CAP_DR1,
|
||||
.flush= ff_mpeg_flush,
|
||||
.pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV410P, -1},
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ENCODERS
|
||||
@ -1945,6 +1946,7 @@ AVCodec svq1_encoder = {
|
||||
svq1_encode_init,
|
||||
svq1_encode_frame,
|
||||
svq1_encode_end,
|
||||
.pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV410P, -1},
|
||||
};
|
||||
|
||||
#endif //CONFIG_ENCODERS
|
||||
|
Loading…
Reference in New Issue
Block a user