Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 9b120c7f3c88d74efedd7f0839b10ed1 > files > 3

xbmc-12.3-1.1.mga4.src.rpm

From a72b579a7205e16b0877c33097143ca97ea05a2a Mon Sep 17 00:00:00 2001
From: Alexis Ballier <aballier@gentoo.org>
Date: Thu, 25 Jul 2013 07:40:31 -0400
Subject: [PATCH 1/3] DVDAudioCodecPcm: Do not use AVCODEC_MAX_AUDIO_FRAME_SIZE
 since it is gone in FFmpeg 2.0 and dynamically allocate buffers as needed.
 (cherry picked from commit 95f0fa3779b6d89c30e8a56ae07d50e6de5f5425)

diff -up xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.cpp.orig xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.cpp
--- xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.cpp.orig	2013-09-11 22:03:30.401441524 +0300
+++ xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.cpp	2013-09-11 22:03:30.432441905 +0300
@@ -116,13 +116,15 @@ CDVDAudioCodecPcm::CDVDAudioCodecPcm() :
   m_codecID = AV_CODEC_ID_NONE;
   m_iOutputChannels = 0;
 
-  memset(m_decodedData, 0, sizeof(m_decodedData));
+  m_decodedData = NULL;
+  m_decodedDataBufSize = 0;
   memset(table, 0, sizeof(table));
 }
 
 CDVDAudioCodecPcm::~CDVDAudioCodecPcm()
 {
   Dispose();
+  delete m_decodedData;
 }
 
 bool CDVDAudioCodecPcm::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options)
@@ -172,8 +174,14 @@ int CDVDAudioCodecPcm::Decode(BYTE* pDat
     src = pData;
     int buf_size = iSize;
 
-    if (iSize > AVCODEC_MAX_AUDIO_FRAME_SIZE / 2)
-        iSize = AVCODEC_MAX_AUDIO_FRAME_SIZE / 2;
+    if (iSize > m_decodedDataBufSize)
+    {
+        delete m_decodedData;
+        samples = m_decodedData = new short[iSize];
+        if(!m_decodedData)
+            return -1;
+        m_decodedDataBufSize = iSize;
+    }
 
     switch (m_codecID)
     {
diff -up xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.h.orig xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.h
--- xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.h.orig	2013-09-11 22:03:30.401441524 +0300
+++ xbmc-12.2/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPcm.h	2013-09-11 22:03:30.432441905 +0300
@@ -41,7 +41,8 @@ public:
 protected:
   virtual void SetDefault();
 
-  short m_decodedData[131072]; // could be a bit to big
+  short* m_decodedData;
+  int m_decodedDataBufSize;
   int m_decodedDataSize;
 
   AVCodecID m_codecID;