Mercurial > mplayer.hg
comparison mplayer.c @ 32886:5522b2153a0d
Use mp_asprintf in get_metadata instead of limited stack buffer.
author | cboesch |
---|---|
date | Sat, 26 Feb 2011 11:58:53 +0000 |
parents | 674117ab7ce7 |
children | db45f9bd690d |
comparison
equal
deleted
inserted
replaced
32885:34fb7af52b82 | 32886:5522b2153a0d |
---|---|
436 | 436 |
437 return info[2*n+1] ? strdup (info[2*n+1]) : NULL; | 437 return info[2*n+1] ? strdup (info[2*n+1]) : NULL; |
438 } | 438 } |
439 | 439 |
440 char *get_metadata (metadata_t type) { | 440 char *get_metadata (metadata_t type) { |
441 char meta[128]; | |
442 sh_audio_t * const sh_audio = mpctx->sh_audio; | 441 sh_audio_t * const sh_audio = mpctx->sh_audio; |
443 sh_video_t * const sh_video = mpctx->sh_video; | 442 sh_video_t * const sh_video = mpctx->sh_video; |
444 | 443 |
445 if (!is_valid_metadata_type (type)) | 444 if (!is_valid_metadata_type (type)) |
446 return NULL; | 445 return NULL; |
458 else if (sh_video->format == 0x10000004) | 457 else if (sh_video->format == 0x10000004) |
459 return strdup("mpeg4"); | 458 return strdup("mpeg4"); |
460 else if (sh_video->format == 0x10000005) | 459 else if (sh_video->format == 0x10000005) |
461 return strdup("h264"); | 460 return strdup("h264"); |
462 else if (sh_video->format >= 0x20202020) | 461 else if (sh_video->format >= 0x20202020) |
463 snprintf(meta, sizeof(meta), "%.4s", (char *) &sh_video->format); | 462 return mp_asprintf("%.4s", (char *)&sh_video->format); |
464 else | 463 return mp_asprintf("0x%08X", sh_video->format); |
465 snprintf(meta, sizeof(meta), "0x%08X", sh_video->format); | |
466 return strdup(meta); | |
467 | 464 |
468 case META_VIDEO_BITRATE: | 465 case META_VIDEO_BITRATE: |
469 snprintf(meta, sizeof(meta), "%d kbps", (int) (sh_video->i_bps * 8 / 1024)); | 466 return mp_asprintf("%d kbps", (int)(sh_video->i_bps * 8 / 1024)); |
470 return strdup(meta); | |
471 | 467 |
472 case META_VIDEO_RESOLUTION: | 468 case META_VIDEO_RESOLUTION: |
473 snprintf(meta, sizeof(meta), "%d x %d", sh_video->disp_w, sh_video->disp_h); | 469 return mp_asprintf("%d x %d", sh_video->disp_w, sh_video->disp_h); |
474 return strdup(meta); | |
475 | 470 |
476 case META_AUDIO_CODEC: | 471 case META_AUDIO_CODEC: |
477 if (sh_audio->codec && sh_audio->codec->name) | 472 if (sh_audio->codec && sh_audio->codec->name) |
478 return strdup(sh_audio->codec->name); | 473 return strdup(sh_audio->codec->name); |
479 break; | 474 break; |
480 | 475 |
481 case META_AUDIO_BITRATE: | 476 case META_AUDIO_BITRATE: |
482 snprintf(meta, sizeof(meta), "%d kbps", (int)(sh_audio->i_bps * 8 / 1000)); | 477 return mp_asprintf("%d kbps", (int)(sh_audio->i_bps * 8 / 1000)); |
483 return strdup(meta); | |
484 | 478 |
485 case META_AUDIO_SAMPLES: | 479 case META_AUDIO_SAMPLES: |
486 snprintf(meta, sizeof(meta), "%d Hz, %d ch.", sh_audio->samplerate, sh_audio->channels); | 480 return mp_asprintf("%d Hz, %d ch.", sh_audio->samplerate, sh_audio->channels); |
487 return strdup(meta); | |
488 | 481 |
489 /* check for valid demuxer */ | 482 /* check for valid demuxer */ |
490 case META_INFO_TITLE: | 483 case META_INFO_TITLE: |
491 return get_demuxer_info ("Title"); | 484 return get_demuxer_info ("Title"); |
492 | 485 |