samples/videoplayer: migrate from libavresample to libswresample (#1551)

This commit is contained in:
Mike Sinkovsky
2018-05-03 18:01:53 +05:00
committed by Nikolay Igotti
parent cafc30cf76
commit f5090b1317
3 changed files with 11 additions and 11 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ ffmpeg and SDL2 is needed for that to work, i.e.
port install ffmpeg-devel port install ffmpeg-devel
brew install ffmpeg sdl2 brew install ffmpeg sdl2
apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \ apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
libavresample-dev libswresample-dev
apt install libsdl2-dev apt install libsdl2-dev
pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-ffmpeg pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-ffmpeg
@@ -1,9 +1,9 @@
package = ffmpeg package = ffmpeg
headers = libavcodec/avcodec.h libavformat/avformat.h libavutil/pixfmt.h libavutil/opt.h \ headers = libavcodec/avcodec.h libavformat/avformat.h libavutil/pixfmt.h libavutil/opt.h \
libswscale/swscale.h libavresample/avresample.h libswscale/swscale.h libswresample/swresample.h
headerFilter = libavcodec/** libavformat/** libavutil/** \ headerFilter = libavcodec/** libavformat/** libavutil/** \
libswscale/** libavresample/** libswscale/** libswresample/**
linkerOpts = -lavutil -lavformat -lavcodec -lswscale -lavresample linkerOpts = -lavutil -lavformat -lavcodec -lswscale -lswresample
--- ---
static void av_buffer_unref2(AVBufferRef* ref) { static void av_buffer_unref2(AVBufferRef* ref) {
@@ -21,7 +21,7 @@ static void avformat_free_context2(AVFormatContext* ref) {
avformat_free_context(&copy); avformat_free_context(&copy);
} }
static void avresample_free2(AVAudioResampleContext* ref) { static void swr_free2(SwrContext* ref) {
AVAudioResampleContext* copy = ref; SwrContext* copy = ref;
avresample_free(&copy); swr_free(&copy);
} }
@@ -190,8 +190,8 @@ private class AudioDecoder(
disposable(create = ::av_frame_alloc, dispose = ::av_frame_unref).pointed disposable(create = ::av_frame_alloc, dispose = ::av_frame_unref).pointed
private val resampledAudioFrame: AVFrame = private val resampledAudioFrame: AVFrame =
disposable(create = ::av_frame_alloc, dispose = ::av_frame_unref).pointed disposable(create = ::av_frame_alloc, dispose = ::av_frame_unref).pointed
private val resampleContext: CPointer<AVAudioResampleContext> = private val resampleContext: CPointer<SwrContext> =
disposable(create = ::avresample_alloc_context, dispose = ::avresample_free2) disposable(create = ::swr_alloc, dispose = ::swr_free2)
private val audioQueue = Queue<AudioFrame>(100) private val audioQueue = Queue<AudioFrame>(100)
@@ -214,7 +214,7 @@ private class AudioDecoder(
setResampleOpt("in_sample_fmt", sample_fmt) setResampleOpt("in_sample_fmt", sample_fmt)
setResampleOpt("out_sample_fmt", output.sampleFormat) setResampleOpt("out_sample_fmt", output.sampleFormat)
} }
avresample_open(resampleContext) swr_init(resampleContext)
} }
private fun setResampleOpt(name: String, value: Int) = private fun setResampleOpt(name: String, value: Int) =
@@ -248,7 +248,7 @@ private class AudioDecoder(
val size = avcodec_decode_audio4(audioCodecContext.ptr, audioFrame.ptr, frameFinished.ptr, packet.ptr) val size = avcodec_decode_audio4(audioCodecContext.ptr, audioFrame.ptr, frameFinished.ptr, packet.ptr)
if (frameFinished.value != 0) { if (frameFinished.value != 0) {
// Put audio frame to decoder's queue. // Put audio frame to decoder's queue.
avresample_convert_frame(resampleContext, resampledAudioFrame.ptr, audioFrame.ptr).checkAVError() swr_convert_frame(resampleContext, resampledAudioFrame.ptr, audioFrame.ptr).checkAVError()
with (resampledAudioFrame) { with (resampledAudioFrame) {
val audioFrameSize = av_samples_get_buffer_size(null, channels, nb_samples, format, 1) val audioFrameSize = av_samples_get_buffer_size(null, channels, nb_samples, format, 1)
val buffer = av_buffer_alloc(audioFrameSize)!! val buffer = av_buffer_alloc(audioFrameSize)!!