comparison libmpdemux/demux_lavf.c @ 31073:c35d122852da

add ID_..._NAME to -identify for each lavf stream which has a title
author aurel
date Mon, 03 May 2010 22:30:06 +0000
parents b8cccda750cf
children 84a83cc32f99
comparison
equal deleted inserted replaced
31072:b8cccda750cf 31073:c35d122852da
239 static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) { 239 static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
240 lavf_priv_t *priv= demuxer->priv; 240 lavf_priv_t *priv= demuxer->priv;
241 AVStream *st= avfc->streams[i]; 241 AVStream *st= avfc->streams[i];
242 AVCodecContext *codec= st->codec; 242 AVCodecContext *codec= st->codec;
243 AVMetadataTag *lang = av_metadata_get(st->metadata, "language", NULL, 0); 243 AVMetadataTag *lang = av_metadata_get(st->metadata, "language", NULL, 0);
244 AVMetadataTag *title= av_metadata_get(st->metadata, "title", NULL, 0);
244 int g, override_tag = av_codec_get_tag(mp_codecid_override_taglists, 245 int g, override_tag = av_codec_get_tag(mp_codecid_override_taglists,
245 codec->codec_id); 246 codec->codec_id);
246 // For some formats (like PCM) always trust CODEC_ID_* more than codec_tag 247 // For some formats (like PCM) always trust CODEC_ID_* more than codec_tag
247 if (override_tag) 248 if (override_tag)
248 codec->codec_tag = override_tag; 249 codec->codec_tag = override_tag;
305 break; 306 break;
306 case CODEC_ID_PCM_MULAW: 307 case CODEC_ID_PCM_MULAW:
307 sh_audio->format = 0x7; 308 sh_audio->format = 0x7;
308 break; 309 break;
309 } 310 }
311 if (title && title->value)
312 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AID_%d_NAME=%s\n", priv->audio_streams, title->value);
310 if (lang && lang->value) { 313 if (lang && lang->value) {
311 sh_audio->lang = strdup(lang->value); 314 sh_audio->lang = strdup(lang->value);
312 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AID_%d_LANG=%s\n", priv->audio_streams, sh_audio->lang); 315 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AID_%d_LANG=%s\n", priv->audio_streams, sh_audio->lang);
313 } 316 }
314 if (st->disposition & AV_DISPOSITION_DEFAULT) 317 if (st->disposition & AV_DISPOSITION_DEFAULT)
364 / (float)(codec->height * st->sample_aspect_ratio.den); 367 / (float)(codec->height * st->sample_aspect_ratio.den);
365 else 368 else
366 sh_video->aspect=codec->width * codec->sample_aspect_ratio.num 369 sh_video->aspect=codec->width * codec->sample_aspect_ratio.num
367 / (float)(codec->height * codec->sample_aspect_ratio.den); 370 / (float)(codec->height * codec->sample_aspect_ratio.den);
368 sh_video->i_bps=codec->bit_rate/8; 371 sh_video->i_bps=codec->bit_rate/8;
372 if (title && title->value)
373 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VID_%d_NAME=%s\n", priv->video_streams, title->value);
369 mp_msg(MSGT_DEMUX,MSGL_DBG2,"aspect= %d*%d/(%d*%d)\n", 374 mp_msg(MSGT_DEMUX,MSGL_DBG2,"aspect= %d*%d/(%d*%d)\n",
370 codec->width, codec->sample_aspect_ratio.num, 375 codec->width, codec->sample_aspect_ratio.num,
371 codec->height, codec->sample_aspect_ratio.den); 376 codec->height, codec->sample_aspect_ratio.den);
372 377
373 sh_video->ds= demuxer->video; 378 sh_video->ds= demuxer->video;
414 if (codec->extradata_size) { 419 if (codec->extradata_size) {
415 sh_sub->extradata = malloc(codec->extradata_size); 420 sh_sub->extradata = malloc(codec->extradata_size);
416 memcpy(sh_sub->extradata, codec->extradata, codec->extradata_size); 421 memcpy(sh_sub->extradata, codec->extradata, codec->extradata_size);
417 sh_sub->extradata_len = codec->extradata_size; 422 sh_sub->extradata_len = codec->extradata_size;
418 } 423 }
424 if (title && title->value)
425 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_NAME=%s\n", priv->sub_streams, title->value);
419 if (lang && lang->value) { 426 if (lang && lang->value) {
420 sh_sub->lang = strdup(lang->value); 427 sh_sub->lang = strdup(lang->value);
421 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_LANG=%s\n", priv->sub_streams, sh_sub->lang); 428 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_SID_%d_LANG=%s\n", priv->sub_streams, sh_sub->lang);
422 } 429 }
423 if (st->disposition & AV_DISPOSITION_DEFAULT) 430 if (st->disposition & AV_DISPOSITION_DEFAULT)