mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-26 06:48:46 +01:00
describe_vgmstream: FFMpeg long_name may be NULL
This commit is contained in:
parent
a359dd1816
commit
9e6458c4b9
@ -1792,6 +1792,7 @@ int vgmstream_do_loop(VGMSTREAM * vgmstream) {
|
|||||||
ffmpeg_codec_data *data = (ffmpeg_codec_data *)(vgmstream->codec_data);
|
ffmpeg_codec_data *data = (ffmpeg_codec_data *)(vgmstream->codec_data);
|
||||||
int64_t ts;
|
int64_t ts;
|
||||||
|
|
||||||
|
#ifndef VGM_USE_FFMPEG_ACCURATE_LOOPING
|
||||||
/* Seek to loop start by timestamp (closest frame) + adjust skipping some samples */
|
/* Seek to loop start by timestamp (closest frame) + adjust skipping some samples */
|
||||||
/* FFmpeg seeks by ts by design (since not all containers can accurately skip to a frame). */
|
/* FFmpeg seeks by ts by design (since not all containers can accurately skip to a frame). */
|
||||||
/* TODO: this seems to be off by +-1 frames in some cases */
|
/* TODO: this seems to be off by +-1 frames in some cases */
|
||||||
@ -1807,6 +1808,9 @@ int vgmstream_do_loop(VGMSTREAM * vgmstream) {
|
|||||||
data->framesRead = (int)ts;
|
data->framesRead = (int)ts;
|
||||||
ts = data->framesRead * (data->formatCtx->duration) / data->totalFrames;
|
ts = data->framesRead * (data->formatCtx->duration) / data->totalFrames;
|
||||||
|
|
||||||
|
avformat_seek_file(data->formatCtx, -1, ts - 1000, ts, ts, AVSEEK_FLAG_ANY);
|
||||||
|
avcodec_flush_buffers(data->codecCtx);
|
||||||
|
#endif /* ifndef VGM_USE_FFMPEG_ACCURATE_LOOPING */
|
||||||
|
|
||||||
#ifdef VGM_USE_FFMPEG_ACCURATE_LOOPING
|
#ifdef VGM_USE_FFMPEG_ACCURATE_LOOPING
|
||||||
/* Start from 0 and discard samples until loop_start for accurate looping (slower but not too noticeable) */
|
/* Start from 0 and discard samples until loop_start for accurate looping (slower but not too noticeable) */
|
||||||
@ -1815,10 +1819,10 @@ int vgmstream_do_loop(VGMSTREAM * vgmstream) {
|
|||||||
data->samplesToDiscard = vgmstream->loop_start_sample;
|
data->samplesToDiscard = vgmstream->loop_start_sample;
|
||||||
data->framesRead = 0;
|
data->framesRead = 0;
|
||||||
ts = 0;
|
ts = 0;
|
||||||
#endif /* VGM_USE_FFMPEG_ACCURATE_LOOPING */
|
|
||||||
|
|
||||||
avformat_seek_file(data->formatCtx, -1, ts - 1000, ts, ts, AVSEEK_FLAG_ANY);
|
avformat_seek_file(data->formatCtx, -1, ts, ts, ts, AVSEEK_FLAG_ANY);
|
||||||
avcodec_flush_buffers(data->codecCtx);
|
avcodec_flush_buffers(data->codecCtx);
|
||||||
|
#endif /* ifdef VGM_USE_FFMPEG_ACCURATE_LOOPING */
|
||||||
|
|
||||||
data->readNextPacket = 1;
|
data->readNextPacket = 1;
|
||||||
data->bytesConsumedFromDecodedFrame = INT_MAX;
|
data->bytesConsumedFromDecodedFrame = INT_MAX;
|
||||||
@ -2129,11 +2133,14 @@ void describe_vgmstream(VGMSTREAM * vgmstream, char * desc, int length) {
|
|||||||
{
|
{
|
||||||
ffmpeg_codec_data *data = (ffmpeg_codec_data *) vgmstream->codec_data;
|
ffmpeg_codec_data *data = (ffmpeg_codec_data *) vgmstream->codec_data;
|
||||||
if (vgmstream->codec_data) {
|
if (vgmstream->codec_data) {
|
||||||
if (data->codec) {
|
if (data->codec && data->codec->long_name) {
|
||||||
snprintf(temp,TEMPSIZE,data->codec->long_name);
|
snprintf(temp,TEMPSIZE,data->codec->long_name);
|
||||||
}
|
}
|
||||||
|
else if (data->codec && data->codec->name) {
|
||||||
|
snprintf(temp,TEMPSIZE,data->codec->name);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(temp,TEMPSIZE,"FFmpeg");
|
snprintf(temp,TEMPSIZE,"FFmpeg (unknown codec)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user