You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Fixed some bugs in the audio decoding.
This commit is contained in:
@@ -411,10 +411,10 @@ void FFmpegReader::ProcessAudioPacket(int requested_frame, int target_frame, int
|
||||
buf_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
||||
|
||||
// decode audio packet into samples (put samples in the audio_buf array)
|
||||
int sample_count = avcodec_decode_audio2(aCodecCtx, audio_buf, &buf_size,
|
||||
int used = avcodec_decode_audio2(aCodecCtx, audio_buf, &buf_size,
|
||||
packet.data, packet.size);
|
||||
|
||||
if (sample_count < 0) {
|
||||
if (used < 0) {
|
||||
// Throw exception
|
||||
throw ErrorDecodingAudio("Error decoding audio samples", target_frame);
|
||||
packet.size = 0;
|
||||
@@ -422,11 +422,11 @@ void FFmpegReader::ProcessAudioPacket(int requested_frame, int target_frame, int
|
||||
}
|
||||
|
||||
// Calculate total number of samples
|
||||
packet_samples += sample_count;
|
||||
packet_samples += buf_size;
|
||||
|
||||
// process samples...
|
||||
packet.data += sample_count;
|
||||
packet.size -= sample_count;
|
||||
packet.data += used;
|
||||
packet.size -= used;
|
||||
}
|
||||
|
||||
|
||||
@@ -547,7 +547,7 @@ void FFmpegReader::Seek(int requested_frame)
|
||||
|
||||
// Calculate seek target
|
||||
seeking_pts = ConvertFrameToVideoPTS(requested_frame);
|
||||
int64_t seek_target = ((double)seeking_pts * info.video_timebase.ToDouble()) * (double)AV_TIME_BASE;
|
||||
seek_target = ((double)seeking_pts * info.video_timebase.ToDouble()) * (double)AV_TIME_BASE;
|
||||
}
|
||||
else if (info.audio_stream_index >= 0)
|
||||
{
|
||||
@@ -557,7 +557,7 @@ void FFmpegReader::Seek(int requested_frame)
|
||||
|
||||
// Calculate seek target
|
||||
seeking_pts = ConvertFrameToAudioPTS(requested_frame); // PTS seems to always start at zero, and our frame numbers start at 1.
|
||||
int64_t seek_target = ((double)seeking_pts * info.audio_timebase.ToDouble()) * (double)AV_TIME_BASE;
|
||||
seek_target = ((double)seeking_pts * info.audio_timebase.ToDouble()) * (double)AV_TIME_BASE;
|
||||
}
|
||||
|
||||
// If valid stream, rescale timestamp so the av_seek_frame method will understand it
|
||||
|
||||
17
src/Main.cpp
17
src/Main.cpp
@@ -17,8 +17,8 @@ int main()
|
||||
// openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test.mp4");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test1.mp4");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Videos/OpenShot_Now_In_3d.mp4");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Videos/sintel-1024-stereo.mp4");
|
||||
openshot::FFmpegReader r("/home/jonathan/Videos/sintel_trailer-720p.mp4");
|
||||
openshot::FFmpegReader r("/home/jonathan/Videos/sintel-1024-stereo.mp4");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Videos/sintel_trailer-720p.mp4");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/test.wav");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Music/Army of Lovers/Crucified/Army of Lovers - Crucified [Single Version].mp3");
|
||||
// openshot::FFmpegReader r("/home/jonathan/Documents/OpenShot Art/bannertemplate.png");
|
||||
@@ -28,13 +28,12 @@ int main()
|
||||
// Display debug info
|
||||
r.DisplayInfo();
|
||||
|
||||
r.GetFrame(400).DisplayWaveform(false);
|
||||
r.GetFrame(401).DisplayWaveform(false);
|
||||
r.GetFrame(402).DisplayWaveform(false);
|
||||
r.GetFrame(403).DisplayWaveform(false);
|
||||
r.GetFrame(404).DisplayWaveform(false);
|
||||
//r.GetFrame(301).DisplayWaveform();
|
||||
//r.GetFrame(302).DisplayWaveform();
|
||||
for (int frame = 1500; frame < 2000; frame++)
|
||||
{
|
||||
Frame f = r.GetFrame(frame);
|
||||
f.Play();
|
||||
f.DisplayWaveform(false);
|
||||
}
|
||||
|
||||
//Player g;
|
||||
//g.SetReader(&r);
|
||||
|
||||
Reference in New Issue
Block a user