mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-12 10:29:39 +00:00
Allow overriding codec_ids.
Originally committed as revision 11266 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
379374ea11
commit
626004690c
5
ffmpeg.c
5
ffmpeg.c
@ -2662,6 +2662,11 @@ static void opt_input_file(const char *filename)
|
||||
if(str && (opt->flags & AV_OPT_FLAG_DECODING_PARAM))
|
||||
av_set_string(ic, opt_names[i], str);
|
||||
}
|
||||
|
||||
ic->video_codec_id = find_codec_or_die(video_codec_name , CODEC_TYPE_VIDEO , 0);
|
||||
ic->audio_codec_id = find_codec_or_die(audio_codec_name , CODEC_TYPE_AUDIO , 0);
|
||||
ic->subtitle_codec_id= find_codec_or_die(subtitle_codec_name, CODEC_TYPE_SUBTITLE, 0);
|
||||
|
||||
/* open the input file with generic libav function */
|
||||
err = av_open_input_file(&ic, filename, file_iformat, 0, ap);
|
||||
if (err < 0) {
|
||||
|
@ -445,6 +445,22 @@ typedef struct AVFormatContext {
|
||||
|
||||
unsigned int nb_programs;
|
||||
AVProgram **programs;
|
||||
|
||||
/**
|
||||
* Forced video codec_id.
|
||||
* demuxing: set by user
|
||||
*/
|
||||
enum CodecID video_codec_id;
|
||||
/**
|
||||
* Forced audio codec_id.
|
||||
* demuxing: set by user
|
||||
*/
|
||||
enum CodecID audio_codec_id;
|
||||
/**
|
||||
* Forced subtitle codec_id.
|
||||
* demuxing: set by user
|
||||
*/
|
||||
enum CodecID subtitle_codec_id;
|
||||
} AVFormatContext;
|
||||
|
||||
typedef struct AVPacketList {
|
||||
|
@ -493,8 +493,25 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
|
||||
|
||||
int av_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
{
|
||||
int ret;
|
||||
AVStream *st;
|
||||
av_init_packet(pkt);
|
||||
return s->iformat->read_packet(s, pkt);
|
||||
ret= s->iformat->read_packet(s, pkt);
|
||||
st= s->streams[pkt->stream_index];
|
||||
|
||||
switch(st->codec->codec_type){
|
||||
case CODEC_TYPE_VIDEO:
|
||||
if(s->video_codec_id) st->codec->codec_id= s->video_codec_id;
|
||||
break;
|
||||
case CODEC_TYPE_AUDIO:
|
||||
if(s->audio_codec_id) st->codec->codec_id= s->audio_codec_id;
|
||||
break;
|
||||
case CODEC_TYPE_SUBTITLE:
|
||||
if(s->subtitle_codec_id)st->codec->codec_id= s->subtitle_codec_id;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**********************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user