aboutsummaryrefslogtreecommitdiff
path: root/games/alephone/r5009.diff
diff options
context:
space:
mode:
Diffstat (limited to 'games/alephone/r5009.diff')
-rw-r--r--games/alephone/r5009.diff385
1 files changed, 385 insertions, 0 deletions
diff --git a/games/alephone/r5009.diff b/games/alephone/r5009.diff
new file mode 100644
index 000000000000..39f9e648cf07
--- /dev/null
+++ b/games/alephone/r5009.diff
@@ -0,0 +1,385 @@
+Index: Source_Files/Sound/FFmpegDecoder.cpp
+===================================================================
+--- Source_Files/Sound/FFmpegDecoder.cpp (revision 5008)
++++ Source_Files/Sound/FFmpegDecoder.cpp (revision 5009)
+@@ -199,10 +199,13 @@
+
+ while (pkt_temp.size > 0)
+ {
+- AVFrame frame;
+- avcodec_get_frame_defaults(&frame);
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,0)
++ AVFrame *dframe = avcodec_alloc_frame();
++#else
++ AVFrame *dframe = av_frame_alloc();
++#endif
+ int got_frame = 0;
+- int bytes_read = avcodec_decode_audio4(dec_ctx, &frame, &got_frame, &pkt_temp);
++ int bytes_read = avcodec_decode_audio4(dec_ctx, dframe, &got_frame, &pkt_temp);
+ if (bytes_read < 0)
+ {
+ av_free_packet(&pkt);
+@@ -216,12 +219,12 @@
+
+ int stride = -1;
+ if (channels > 1 && av_sample_fmt_is_planar(in_fmt))
+- stride = frame.extended_data[1] - frame.extended_data[0];
++ stride = dframe->extended_data[1] - dframe->extended_data[0];
+
+- int written = convert_audio(frame.nb_samples, channels,
++ int written = convert_audio(dframe->nb_samples, channels,
+ stride,
+- in_fmt, frame.extended_data[0],
+- frame.nb_samples, channels,
++ in_fmt, dframe->extended_data[0],
++ dframe->nb_samples, channels,
+ -1,
+ out_fmt, av->temp_data);
+
+@@ -230,6 +233,12 @@
+ pkt_temp.data += bytes_read;
+ pkt_temp.size -= bytes_read;
+ }
++
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,0)
++ av_freep(&dframe);
++#else
++ av_frame_free(&dframe);
++#endif
+ }
+
+ av_free_packet(&pkt);
+Index: Source_Files/FFmpeg/Movie.cpp
+===================================================================
+--- Source_Files/FFmpeg/Movie.cpp (revision 5008)
++++ Source_Files/FFmpeg/Movie.cpp (revision 5009)
+@@ -85,6 +85,15 @@
+ }
+ #endif
+
++// FFmpeg compatibility
++#ifndef AV_CODEC_ID_VP8
++#define AV_CODEC_ID_VP8 CODEC_ID_VP8
++#endif
++#ifndef AV_CODEC_ID_VORBIS
++#define AV_CODEC_ID_VORBIS CODEC_ID_VORBIS
++#endif
++
++
+ // shamelessly stolen from SDL 2.0
+ static int get_cpu_count(void)
+ {
+@@ -399,7 +408,7 @@
+ AVStream *video_stream;
+ if (success)
+ {
+- video_codec = avcodec_find_encoder(CODEC_ID_VP8);
++ video_codec = avcodec_find_encoder(AV_CODEC_ID_VP8);
+ success = video_codec;
+ if (!success) err_msg = "Could not find VP8 encoder";
+ }
+@@ -445,7 +454,11 @@
+ }
+ if (success)
+ {
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,0)
+ av->video_frame = avcodec_alloc_frame();
++#else
++ av->video_frame = av_frame_alloc();
++#endif
+ success = av->video_frame;
+ if (!success) err_msg = "Could not allocate video frame";
+ }
+@@ -466,7 +479,7 @@
+ AVStream *audio_stream;
+ if (success)
+ {
+- audio_codec = avcodec_find_encoder(CODEC_ID_VORBIS);
++ audio_codec = avcodec_find_encoder(AV_CODEC_ID_VORBIS);
+ success = audio_codec;
+ if (!success) err_msg = "Could not find Vorbis encoder";
+ }
+@@ -511,7 +524,11 @@
+ }
+ if (success)
+ {
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,0)
+ av->audio_frame = avcodec_alloc_frame();
++#else
++ av->audio_frame = av_frame_alloc();
++#endif
+ success = av->audio_frame;
+ if (!success) err_msg = "Could not allocate audio frame";
+ }
+@@ -550,6 +567,7 @@
+ // Start movie file
+ if (success)
+ {
++ video_stream->time_base = (AVRational){1, TICKS_PER_SECOND};
+ avformat_write_header(av->fmt_ctx, NULL);
+ }
+
+@@ -615,13 +633,15 @@
+ while (!done)
+ {
+ // add video
+- int vsize = avcodec_encode_video(vcodec,
+- av->video_buf, av->video_bufsize,
+- frame);
++ AVPacket pkt;
++ av_init_packet(&pkt);
++ pkt.data = av->video_buf;
++ pkt.size = av->video_bufsize;
++
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54,0,0)
++ int vsize = avcodec_encode_video(vcodec, av->video_buf, av->video_bufsize, frame);
+ if (vsize > 0)
+ {
+- AVPacket pkt;
+- av_init_packet(&pkt);
+ if (vcodec->coded_frame->pts != AV_NOPTS_VALUE)
+ {
+ pkt.pts = av_rescale_q(vcodec->coded_frame->pts,
+@@ -630,12 +650,19 @@
+ }
+ if (vcodec->coded_frame->key_frame)
+ pkt.flags |= AV_PKT_FLAG_KEY;
++ pkt.size = vsize;
++ }
++
++#else
++ int got_packet = 0;
++ int vsize = avcodec_encode_video2(vcodec, &pkt, frame, &got_packet);
++#endif
++ if (vsize > 0)
++ {
+ pkt.stream_index = vstream->index;
+- pkt.data = av->video_buf;
+- pkt.size = vsize;
+ av_interleaved_write_frame(av->fmt_ctx, &pkt);
+- av_free_packet(&pkt);
+ }
++ av_free_packet(&pkt);
+
+ if (!last || vsize <= 0)
+ done = true;
+@@ -679,7 +706,11 @@
+ write_samples, acodec->channels, write_samples * write_bps,
+ acodec->sample_fmt, av->audio_data_conv);
+
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1)
+ avcodec_get_frame_defaults(av->audio_frame);
++#else
++ av_frame_unref(av->audio_frame);
++#endif
+ av->audio_frame->nb_samples = write_samples;
+ int asize = avcodec_fill_audio_frame(av->audio_frame, acodec->channels,
+ acodec->sample_fmt,
+@@ -695,7 +726,7 @@
+ if (0 == avcodec_encode_audio2(acodec, &pkt, av->audio_frame, &got_pkt)
+ && got_pkt)
+ {
+- if (acodec->coded_frame->pts != AV_NOPTS_VALUE)
++ if (acodec->coded_frame && acodec->coded_frame->pts != AV_NOPTS_VALUE)
+ {
+ pkt.pts = av_rescale_q(acodec->coded_frame->pts,
+ acodec->time_base,
+Index: Source_Files/FFmpeg/SDL_ffmpeg.c
+===================================================================
+--- Source_Files/FFmpeg/SDL_ffmpeg.c (revision 5008)
++++ Source_Files/FFmpeg/SDL_ffmpeg.c (revision 5009)
+@@ -48,6 +48,38 @@
+ }
+ #endif
+
++// FFmpeg compatibility
++#ifndef AV_CODEC_ID_MPEG1VIDEO
++#define AV_CODEC_ID_MPEG1VIDEO CODEC_ID_MPEG1VIDEO
++#endif
++#ifndef AV_CODEC_ID_MPEG2VIDEO
++#define AV_CODEC_ID_MPEG2VIDEO CODEC_ID_MPEG2VIDEO
++#endif
++#ifndef AV_CODEC_ID_MP2
++#define AV_CODEC_ID_MP2 CODEC_ID_MP2
++#endif
++#ifndef AV_CODEC_ID_DVVIDEO
++#define AV_CODEC_ID_DVVIDEO CODEC_ID_DVVIDEO
++#endif
++#ifndef AV_CODEC_ID_DVAUDIO
++#define AV_CODEC_ID_DVAUDIO CODEC_ID_DVAUDIO
++#endif
++#ifndef AV_CODEC_ID_PCM_S16LE
++#define AV_CODEC_ID_PCM_S16LE CODEC_ID_PCM_S16LE
++#endif
++#ifndef AV_CODEC_ID_PCM_S16BE
++#define AV_CODEC_ID_PCM_S16BE CODEC_ID_PCM_S16BE
++#endif
++#ifndef AV_CODEC_ID_PCM_U16LE
++#define AV_CODEC_ID_PCM_U16LE CODEC_ID_PCM_U16LE
++#endif
++#ifndef AV_CODEC_ID_PCM_U16BE
++#define AV_CODEC_ID_PCM_U16BE CODEC_ID_PCM_U16BE
++#endif
++#ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
++#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
++#endif
++
+ #include "SDL_ffmpeg.h"
+
+ #ifdef MSVC
+@@ -169,12 +201,12 @@
+
+ const SDL_ffmpegCodec SDL_ffmpegCodecPALDVD =
+ {
+- CODEC_ID_MPEG2VIDEO,
++ AV_CODEC_ID_MPEG2VIDEO,
+ 720, 576,
+ 1, 25,
+ 6000000,
+ -1, -1,
+- CODEC_ID_MP2,
++ AV_CODEC_ID_MP2,
+ 2, 48000,
+ 192000,
+ -1, -1
+@@ -182,12 +214,12 @@
+
+ const SDL_ffmpegCodec SDL_ffmpegCodecPALDV =
+ {
+- CODEC_ID_DVVIDEO,
++ AV_CODEC_ID_DVVIDEO,
+ 720, 576,
+ 1, 25,
+ 6553600,
+ -1, -1,
+- CODEC_ID_DVAUDIO,
++ AV_CODEC_ID_DVAUDIO,
+ 2, 48000,
+ 256000,
+ -1, -1
+@@ -324,7 +356,11 @@
+ {
+ if ( file->type == SDL_ffmpegInputStream )
+ {
++#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(53,17,0)
+ av_close_input_file( file->_ffmpeg );
++#else
++ avformat_close_input( &file->_ffmpeg );
++#endif
+ }
+ else if ( file->type == SDL_ffmpegOutputStream )
+ {
+@@ -448,7 +484,11 @@
+ {
+ stream->mutex = SDL_CreateMutex();
+
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,0)
+ stream->decodeFrame = avcodec_alloc_frame();
++#else
++ stream->decodeFrame = av_frame_alloc();
++#endif
+
+ SDL_ffmpegStream **s = &file->vs;
+ while ( *s )
+@@ -1301,11 +1341,17 @@
+ {
+ if ( stream && stream->_ffmpeg && stream->_ffmpeg->codec )
+ {
+- if ( nominator ) *nominator = stream->_ffmpeg->r_frame_rate.num;
++ AVRational frate;
++#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(55,12,100)
++ frate = stream->_ffmpeg->r_frame_rate;
++#else
++ frate = av_stream_get_r_frame_rate(stream->_ffmpeg);
++#endif
++ if ( nominator ) *nominator = frate.num;
+
+- if ( denominator ) *denominator = stream->_ffmpeg->r_frame_rate.den;
++ if ( denominator ) *denominator = frate.den;
+
+- return ( float )stream->_ffmpeg->r_frame_rate.num / stream->_ffmpeg->r_frame_rate.den;
++ return ( float )frate.num / frate.den;
+ }
+ else
+ {
+@@ -1587,13 +1633,13 @@
+ stream->codec->pix_fmt = PIX_FMT_YUV420P;
+
+ /* set mpeg2 codec parameters */
+- if ( stream->codec->codec_id == CODEC_ID_MPEG2VIDEO )
++ if ( stream->codec->codec_id == AV_CODEC_ID_MPEG2VIDEO )
+ {
+ stream->codec->max_b_frames = 2;
+ }
+
+ /* set mpeg1 codec parameters */
+- if ( stream->codec->codec_id == CODEC_ID_MPEG1VIDEO )
++ if ( stream->codec->codec_id == AV_CODEC_ID_MPEG1VIDEO )
+ {
+ /* needed to avoid using macroblocks in which some coeffs overflow
+ this doesnt happen with normal video, it just happens here as the
+@@ -1757,10 +1803,10 @@
+
+ switch ( stream->codec->codec_id )
+ {
+- case CODEC_ID_PCM_S16LE:
+- case CODEC_ID_PCM_S16BE:
+- case CODEC_ID_PCM_U16LE:
+- case CODEC_ID_PCM_U16BE:
++ case AV_CODEC_ID_PCM_S16LE:
++ case AV_CODEC_ID_PCM_S16BE:
++ case AV_CODEC_ID_PCM_U16LE:
++ case AV_CODEC_ID_PCM_U16BE:
+ str->encodeAudioInputSize >>= 1;
+ break;
+ default:
+@@ -2032,19 +2078,41 @@
+ while ( size > 0 )
+ {
+ /* Decode the packet */
+-
+-#if ( LIBAVCODEC_VERSION_MAJOR <= 52 && LIBAVCODEC_VERSION_MINOR <= 20 )
+- int len = avcodec_decode_audio2( file->audioStream->_ffmpeg->codec, ( int16_t* )file->audioStream->sampleBuffer, &audioSize, pack->data, pack->size );
+-#else
+- int len = avcodec_decode_audio3( file->audioStream->_ffmpeg->codec, ( int16_t* )file->audioStream->sampleBuffer, &audioSize, pack );
++ AVCodecContext *avctx = file->audioStream->_ffmpeg->codec;
++ AVFrame dframe;
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55,28,1)
++ avcodec_get_frame_defaults(&dframe);
+ #endif
+-
+- /* if an error occured, we skip the frame */
+- if ( len <= 0 || !audioSize )
++ int got_frame = 0;
++ int len = avcodec_decode_audio4( avctx, &dframe, &got_frame, pack );
++
++ if (len < 0 || !got_frame)
+ {
+ SDL_ffmpegSetError( "error decoding audio frame" );
+ break;
+ }
++
++ int planar = av_sample_fmt_is_planar( avctx->sample_fmt );
++ int plane_size;
++ int data_size = av_samples_get_buffer_size( &plane_size, avctx->channels, dframe.nb_samples, avctx->sample_fmt, 1 );
++ if ( data_size > 10000 )
++ {
++ SDL_ffmpegSetError( "too much data in decoded audio frame" );
++ break;
++ }
++ memcpy( file->audioStream->sampleBuffer, dframe.extended_data[0], plane_size );
++ audioSize = plane_size;
++ if ( planar && avctx->channels > 1 )
++ {
++ int8_t *out = file->audioStream->sampleBuffer + plane_size;
++ int ch;
++ for ( ch = 1; ch < avctx->channels; ch++ )
++ {
++ memcpy( out, dframe.extended_data[ch], plane_size );
++ out += plane_size;
++ audioSize += plane_size;
++ }
++ }
+
+ /* change pointers */
+ data += len;