diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index 54c942ad..87e87524 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -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 diff --git a/src/Main.cpp b/src/Main.cpp index 7129cc96..dcfbb085 100644 --- a/src/Main.cpp +++ b/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);