diff --git a/core/audio_provider_lavc.cpp b/core/audio_provider_lavc.cpp deleted file mode 100644 index 2d95a5e07..000000000 --- a/core/audio_provider_lavc.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) 2005-2006, Rodrigo Braz Monteiro, Fredrik Mellbin -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of the Aegisub Group nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// ----------------------------------------------------------------------------- -// -// AEGISUB -// -// Website: http://aegisub.cellosoft.com -// Contact: mailto:zeratul@cellosoft.com -// - - -/////////// -// Headers -#include -#include -#include "audio_provider_lavc.h" -#include "options.h" - - -////////////// -// Constructor -LAVCAudioProvider::LAVCAudioProvider(wxString _filename) { - // Set filename - filename = _filename; - - // Init lavc variables - codecContext = NULL; - formatContext = NULL; - codec = NULL; - stream = NULL; - frame = NULL; - - // Register types - static bool avRegistered = false; - if (!avRegistered) { - av_register_all(); - avRegistered = true; - } - - // Load audio - LoadAudio(filename); -} - - -////////////// -// Destructor -LAVCAudioProvider::~LAVCAudioProvider() { - Close(); -} - - -//////////////// -// Get filename -wxString LAVCAudioProvider::GetFilename() { - return filename; -} - - -////////////// -// Load audio -void LAVCAudioProvider::LoadAudio(wxString file) { - // Close first - Close(); - - try { - // Open file - int result = 0; - result = av_open_input_file(&formatContext,filename.mb_str(wxConvLocal),NULL,0,NULL); - if (result != 0) throw _T("Failed opening file."); - - // Get stream info - result = av_find_stream_info(formatContext); - if (result < 0) throw _T("Unable to read stream info"); - - // Find audio stream - audStream = -1; - codecContext = NULL; - for (int i=0;inb_streams;i++) { - codecContext = formatContext->streams[i]->codec; - if (codecContext->codec_type == CODEC_TYPE_AUDIO) { - stream = formatContext->streams[i]; - audStream = i; - break; - } - } - if (audStream == -1) throw _T("Could not find an audio stream"); - - // Find codec - codec = avcodec_find_decoder(codecContext->codec_id); - if (!codec) throw _T("Could not find suitable audio decoder"); - - // Enable truncation - //if (codec->capabilities & CODEC_CAP_TRUNCATED) codecContext->flags |= CODEC_FLAG_TRUNCATED; - - // Open codec - result = avcodec_open(codecContext,codec); - if (result < 0) throw _T("Failed to open audio decoder"); - - // Set variables - sample_rate = codecContext->sample_rate; - channels = codecContext->channels; - bytes_per_sample = 2; //codecContext->sample_fmt; - num_samples = stream->duration / bytes_per_sample; - } - - // Catch errors - catch (...) { - Close(); - throw; - } -} - - -////////// -// Unload -void LAVCAudioProvider::Close() { - // Clean frame - if (frame) av_free(frame); - frame = NULL; - - // Close codec context - if (codec && codecContext) avcodec_close(codecContext); - codecContext = NULL; - codec = NULL; - - // Close format context - if (formatContext) av_close_input_file(formatContext); - formatContext = NULL; -} - - -///////////// -// Get audio -void LAVCAudioProvider::GetAudio(void *buf, __int64 start, __int64 count) { - // TODO - for (__int64 i=0;i -#include -#include -#include "audio_provider.h" - - -//////////////////////// -// Audio provider class -class LAVCAudioProvider : public AudioProvider { -private: - wxString filename; - - AVFormatContext *formatContext; - AVCodecContext *codecContext; - AVStream *stream; - AVCodec *codec; - AVFrame *frame; - int audStream; - - void LoadAudio(wxString file); - void Close(); - -public: - LAVCAudioProvider(wxString _filename); - ~LAVCAudioProvider(); - - wxString GetFilename(); - - void GetAudio(void *buf, __int64 start, __int64 count); - void GetWaveForm(int *min,int *peak,__int64 start,int w,int h,int samples,float scale); -}; - -#endif