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