⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libwma.patch

📁 在mplayer播放器增加wma的定点运算补丁
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
diff -uNr MPlayer-1.0rc2.orig/Makefile MPlayer-1.0rc2/Makefile--- MPlayer-1.0rc2.orig/Makefile	2007-10-07 14:49:33.000000000 -0500+++ MPlayer-1.0rc2/Makefile	2008-04-29 10:33:02.000000000 -0500@@ -58,6 +58,7 @@  COMMON_LIBS-$(LIBAVFORMAT_A)      += libavformat/libavformat.a COMMON_LIBS-$(LIBAVCODEC_A)       += libavcodec/libavcodec.a+COMMON_LIBS-$(LIBWMA)             += libwma/libwma.a COMMON_LIBS-$(LIBAVUTIL_A)        += libavutil/libavutil.a COMMON_LIBS-$(LIBPOSTPROC_A)      += libpostproc/libpostproc.a COMMON_LIBS-$(WIN32DLL)           += loader/libloader.a@@ -122,6 +123,7 @@         libpostproc \         libswscale \         libvo \+        libwma \         loader \         mp3lib \         osdep \@@ -172,6 +174,9 @@ libavcodec/libavcodec.a: 	$(MAKE) -C libavcodec +libwma/libwma.a:+	$(MAKE) -C libwma+ libpostproc/libpostproc.a: 	$(MAKE) -C libpostproc @@ -385,6 +390,7 @@  libavutil/libavutil.a: .norecurse $(wildcard libavutil/*.[ch]) libavcodec/libavcodec.a: .norecurse $(wildcard libavcodec/*.[ch] libavcodec/*/*.[chS])+libwma/libwma.a: .norecurse $(wildcard libwma/*.[ch]) libavformat/libavformat.a: .norecurse $(wildcard libavformat/*.[ch]) libswscale/libswscale.a: .norecurse $(wildcard libswscale/*.[ch]) diff -uNr MPlayer-1.0rc2.orig/configure MPlayer-1.0rc2/configure--- MPlayer-1.0rc2.orig/configure	2007-10-07 14:49:33.000000000 -0500+++ MPlayer-1.0rc2/configure	2008-04-29 11:42:00.000000000 -0500@@ -324,6 +324,7 @@   --disable-twolame         disable Twolame (MPEG layer 2) encoding [autodetect]   --enable-xmms             enable XMMS input plugin support [disabled]   --enable-libdca           enable libdca support [autodetect]+  --enable-libwma           enable Rockbox-based WMA decoder [disabled]   --disable-mp3lib          disable builtin mp3lib [enabled]   --disable-liba52          disable builtin liba52 [enabled]   --disable-libmpeg2        disable builtin libmpeg2 [enabled]@@ -573,6 +574,7 @@ _mp3lib=yes _liba52=yes _libdca=auto+_libwma=no _libmpeg2=yes _faad_internal=auto _faad_external=auto@@ -917,6 +919,8 @@   --disable-liba52)	_liba52=no	;;   --enable-libdca)	_libdca=yes     ;;   --disable-libdca)	_libdca=no      ;;+  --enable-libwma)	_libwma=yes     ;;+  --disable-libwma)	_libwma=no      ;;   --enable-libmpeg2)	_libmpeg2=yes	;;   --disable-libmpeg2)	_libmpeg2=no	;;   --enable-musepack)	_musepack=yes	;;@@ -5998,6 +6002,14 @@ fi echores "$_libdca" +if test "$_libwma" = yes ; then+  _def_libwma='#define HAVE_LIBWMA 1'+  _codecmodules="libwma $_codecmodules"+else+  _def_libwma='#undef HAVE_LIBWMA'+  _nocodecmodules="libwma $_nocodecmodules"+fi+ echocheck "internal libmpeg2 support" if test "$_libmpeg2" = yes ; then   _def_libmpeg2='#define USE_LIBMPEG2 1'@@ -7657,6 +7669,7 @@ X264 = $_x264 LIBNUT = $_libnut LIBDCA = $_libdca+LIBWMA = $_libwma MPLAYER = $_mplayer MENCODER = $_mencoder CDDA = $_cdda@@ -8107,6 +8120,7 @@ $_def_liba52 $_def_libdca $_def_libmpeg2+$_def_libwma  /* XAnim DLL support */ $_def_xanimdiff -uNr MPlayer-1.0rc2.orig/etc/codecs.conf MPlayer-1.0rc2/etc/codecs.conf--- MPlayer-1.0rc2.orig/etc/codecs.conf	2007-10-07 14:49:33.000000000 -0500+++ MPlayer-1.0rc2/etc/codecs.conf	2008-04-29 10:33:08.000000000 -0500@@ -2408,21 +2408,6 @@   driver ffmpeg   dll "real_288" -audiocodec ffcook-  info "FFmpeg COOK audio decoder"-  status working-  format 0x6B6F6F63 ; "cook"-  driver ffmpeg-  dll "cook"--audiocodec ffatrc-  info "FFmpeg Atrac 3 audio decoder"-  status working-  format 0x63727461 ; "atrc"-  format 0x270      ; atrac3 in wav-  driver ffmpeg-  dll "atrac 3"- audiocodec ra144   info "RealAudio 1.0"   status working@@ -2572,6 +2557,21 @@   driver realaud   dll "atrc.bundle/Contents/MacOS/atrc" +audiocodec ffcook+  info "FFmpeg COOK audio decoder"+  status working+  format 0x6B6F6F63 ; "cook"+  driver ffmpeg+  dll "cook"++audiocodec ffatrc+  info "FFmpeg Atrac 3 audio decoder"+  status working+  format 0x63727461 ; "atrc"+  format 0x270      ; atrac3 in wav+  driver ffmpeg+  dll "atrac 3"+ audiocodec ffadpcmimaamv   info "FFmpeg AMV IMA ADPCM audio"   status working@@ -2809,6 +2809,20 @@   driver ffmpeg   dll "pcm_s24daud" +audiocodec libwmav1+  info "DivX audio v1 (libwma)"+  status untested+  format 0x160+  driver libwma+  dll "wmav1"++audiocodec libwmav2+  info "DivX audio v2 (libwma)"+  status untested+  format 0x161+  driver libwma+  dll "wmav2"+ audiocodec ffwmav1   info "DivX audio v1 (FFmpeg)"   status untested@@ -3089,14 +3103,6 @@   format 0x2001   driver hwac3 -audiocodec ffvorbis-  info "FFmpeg Vorbis decoder"-  status working-  fourcc vrbs-  format 0x566F-  driver ffmpeg-  dll "vorbis"- audiocodec vorbis   info "OggVorbis Audio Decoder"   status working@@ -3109,6 +3115,14 @@ ;  driver acm ;  dll "vorbis.acm" +audiocodec ffvorbis+  info "FFmpeg Vorbis decoder"+  status working+  fourcc vrbs+  format 0x566F+  driver ffmpeg+  dll "vorbis"+ audiocodec speex   info "Speex Audio Decoder"   status workingdiff -uNr MPlayer-1.0rc2.orig/libmpcodecs/Makefile MPlayer-1.0rc2/libmpcodecs/Makefile--- MPlayer-1.0rc2.orig/libmpcodecs/Makefile	2007-10-07 14:49:25.000000000 -0500+++ MPlayer-1.0rc2/libmpcodecs/Makefile	2008-04-29 10:33:02.000000000 -0500@@ -109,6 +109,7 @@ SRCS_COMMON-$(JPEG)                  += vd_ijpg.c SRCS_COMMON-$(LIBA52)                += ad_liba52.c SRCS_COMMON-$(LIBAVCODEC)            += ad_ffmpeg.c vd_ffmpeg.c vf_lavc.c vf_lavcdeint.c+SRCS_COMMON-$(LIBWMA)                += ad_libwma.c SRCS_COMMON-$(LIBDCA)                += ad_libdca.c SRCS_COMMON-$(LIBDV)                 += ad_libdv.c vd_libdv.c SRCS_COMMON-$(LIBMAD)                += ad_libmad.c@@ -153,4 +154,4 @@ 	rm -f native/*.o native/*.a native/*~  -ad_libdca.o vd_mpng.o vf_screenshot.o: CFLAGS := $(filter-out -I../libavcodec,$(CFLAGS))+ad_libdca.o ad_libwma.o vd_mpng.o vf_screenshot.o: CFLAGS := $(filter-out -I../libavcodec,$(CFLAGS))diff -uNr MPlayer-1.0rc2.orig/libmpcodecs/ad.c MPlayer-1.0rc2/libmpcodecs/ad.c--- MPlayer-1.0rc2.orig/libmpcodecs/ad.c	2007-10-07 14:49:25.000000000 -0500+++ MPlayer-1.0rc2/libmpcodecs/ad.c	2008-04-29 10:33:02.000000000 -0500@@ -42,6 +42,7 @@ extern ad_functions_t mpcodecs_ad_twin; extern ad_functions_t mpcodecs_ad_libmusepack; extern ad_functions_t mpcodecs_ad_libdca;+extern ad_functions_t mpcodecs_ad_libwma;  ad_functions_t* mpcodecs_ad_drivers[] = {@@ -97,5 +98,8 @@ #ifdef USE_LIBDCA   &mpcodecs_ad_libdca, #endif+#ifdef HAVE_LIBWMA+  &mpcodecs_ad_libwma,+#endif   NULL };diff -uNr MPlayer-1.0rc2.orig/libmpcodecs/ad_libwma.c MPlayer-1.0rc2/libmpcodecs/ad_libwma.c--- MPlayer-1.0rc2.orig/libmpcodecs/ad_libwma.c	1969-12-31 18:00:00.000000000 -0600+++ MPlayer-1.0rc2/libmpcodecs/ad_libwma.c	2008-04-27 18:42:51.000000000 -0500@@ -0,0 +1,135 @@+#include <stdio.h>+#include <stdlib.h>+#include <unistd.h>++#include "config.h"+#include "mp_msg.h"+#include "help_mp.h"++#include "ad_internal.h"++#include "mpbswap.h"++static ad_info_t info = +{+	"libwma Rockbox-based WMA decoder",+	"libwma",+	"Matt Campbell",+	"www.rockbox.org",+	""+};++LIBAD_EXTERN(libwma)++#define assert(x)++#include "libwma/wmadec.h"++static int preinit(sh_audio_t *sh)+{+  sh->audio_out_minsize=192000;+  return 1;+}++static int init(sh_audio_t *sh_audio)+{+    int x;+    WMADecodeContext *wma_context;++    mp_msg(MSGT_DECAUDIO,MSGL_V,"libwma Rockbox-based WMA decoder\n");+    wma_context = malloc(sizeof(WMADecodeContext));+    memset(wma_context, 0, sizeof(WMADecodeContext));+    sh_audio->context=wma_context;++    wma_context->sample_rate = sh_audio->samplerate;+    wma_context->bit_rate = sh_audio->i_bps * 8;+    if(sh_audio->wf){+	wma_context->nb_channels = sh_audio->wf->nChannels;+	wma_context->sample_rate = sh_audio->wf->nSamplesPerSec;+	wma_context->bit_rate = sh_audio->wf->nAvgBytesPerSec * 8;+	wma_context->block_align = sh_audio->wf->nBlockAlign;+    }+    else+	wma_context->nb_channels = audio_output_channels;+    wma_context->codec_id = sh_audio->format;++    /* alloc extra data */+    if (sh_audio->wf && sh_audio->wf->cbSize > 0) {+        wma_context->extradata = malloc(sh_audio->wf->cbSize);+        wma_context->extradata_size = sh_audio->wf->cbSize;+        memcpy(wma_context->extradata, (char *)sh_audio->wf + sizeof(WAVEFORMATEX), +               wma_context->extradata_size);+    }++    /* open it */+    if (libwma_decode_init(wma_context) < 0) {+        mp_msg(MSGT_DECAUDIO,MSGL_ERR, MSGTR_CantOpenCodec);+        return 0;+    }+   mp_msg(MSGT_DECAUDIO,MSGL_V,"INFO: libwma init OK!\n");+   +   // Decode at least 1 byte:  (to get header filled)+   x=decode_audio(sh_audio,sh_audio->a_buffer,1,sh_audio->a_buffer_size);+   if(x>0) sh_audio->a_buffer_len=x;++  sh_audio->channels=wma_context->nb_channels;+  sh_audio->samplerate=wma_context->sample_rate;+  sh_audio->i_bps=wma_context->bit_rate/8;+  if(sh_audio->wf){+      // If the decoder uses the wrong number of channels all is lost anyway.+      // sh_audio->channels=sh_audio->wf->nChannels;+      if (sh_audio->wf->nSamplesPerSec)+      sh_audio->samplerate=sh_audio->wf->nSamplesPerSec;+      if (sh_audio->wf->nAvgBytesPerSec)+      sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;+  }+  sh_audio->samplesize=2;+  return 1;+}++static void uninit(sh_audio_t *sh)+{+    WMADecodeContext *wma_context = sh->context;++    free(wma_context->extradata);+    free(wma_context);+}++static int control(sh_audio_t *sh,int cmd,void* arg, ...)+{+    WMADecodeContext *wma_context = sh->context;+    switch(cmd){+    case ADCTRL_RESYNC_STREAM:+        libwma_decode_superframe(wma_context, NULL, NULL, NULL, 0);+    return CONTROL_TRUE;+    }+    return CONTROL_UNKNOWN;+}++static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen)+{+    unsigned char *start=NULL;+    int y,len=-1;+    while(len<minlen){+	int len2=maxlen;+	double pts;+	int x=ds_get_packet_pts(sh_audio->ds,&start, &pts);+	if(x<=0) break; // error+	if (pts != MP_NOPTS_VALUE) {+	    sh_audio->pts = pts;+	    sh_audio->pts_bytes = 0;+	}+	y=libwma_decode_superframe(sh_audio->context,(int16_t*)buf,&len2,start,x);+	if(y<0){ mp_msg(MSGT_DECAUDIO,MSGL_V,"lavc_audio: error\n");break; }+	if(y<x) sh_audio->ds->buffer_pos+=y-x;  // put back data (HACK!)+	if(len2>0){+	  //len=len2;break;+	  if(len<0) len=len2; else len+=len2;+	  buf+=len2;+	  maxlen -= len2;+	  sh_audio->pts_bytes += len2;+	}+        mp_dbg(MSGT_DECAUDIO,MSGL_DBG2,"Decoded %d -> %d  \n",y,len2);+    }+  return len;+}diff -uNr MPlayer-1.0rc2.orig/libwma/Makefile MPlayer-1.0rc2/libwma/Makefile--- MPlayer-1.0rc2.orig/libwma/Makefile	1969-12-31 18:00:00.000000000 -0600+++ MPlayer-1.0rc2/libwma/Makefile	2008-04-27 18:45:08.000000000 -0500@@ -0,0 +1,6 @@+include ../config.mak++NAME = wma+OBJS = bitstream.o fft.o mdct.o wmadeci.o wmafixed.o++include ../common.makdiff -uNr MPlayer-1.0rc2.orig/libwma/asf.h MPlayer-1.0rc2/libwma/asf.h--- MPlayer-1.0rc2.orig/libwma/asf.h	1969-12-31 18:00:00.000000000 -0600+++ MPlayer-1.0rc2/libwma/asf.h	2008-04-26 16:16:51.000000000 -0500@@ -0,0 +1,24 @@+#ifndef _ASF_H+#define _ASF_H++#include <inttypes.h>++/* ASF codec IDs */+#define ASF_CODEC_ID_WMAV1 0x160+#define ASF_CODEC_ID_WMAV2 0x161++struct asf_waveformatex_s {+        uint32_t packet_size;+        int audiostream;+	uint16_t codec_id;+	uint16_t channels;+	uint32_t rate;+	uint32_t bitrate;+	uint16_t blockalign;+	uint16_t bitspersample;+	uint16_t datalen;+	uint8_t data[6];+};+typedef struct asf_waveformatex_s asf_waveformatex_t;++#endifdiff -uNr MPlayer-1.0rc2.orig/libwma/bitstream.c MPlayer-1.0rc2/libwma/bitstream.c--- MPlayer-1.0rc2.orig/libwma/bitstream.c	1969-12-31 18:00:00.000000000 -0600+++ MPlayer-1.0rc2/libwma/bitstream.c	2008-04-27 15:32:35.000000000 -0500@@ -0,0 +1,270 @@+/*+ * Common bit i/o utils+ * Copyright (c) 2000, 2001 Fabrice Bellard.+ * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>+ *+ * This file is part of FFmpeg.+ *+ * FFmpeg is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Lesser General Public+ * License as published by the Free Software Foundation; either+ * version 2.1 of the License, or (at your option) any later version.+ *+ * FFmpeg is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+ * Lesser General Public License for more details.+ *+ * You should have received a copy of the GNU Lesser General Public+ * License along with FFmpeg; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA+ *+ * alternative bitstream reader & writer by Michael Niedermayer <michaelni@gmx.at>+ */++/**+ * @file bitstream.c+ * bitstream api.+ */++#include "bitstream.h"++/**+ * Same as av_mallocz_static(), but does a realloc.+ *+ * @param[in] ptr The block of memory to reallocate.+ * @param[in] size The requested size.+ * @return Block of memory of requested size.+ * @deprecated. Code which uses ff_realloc_static is broken/missdesigned+ * and should correctly use static arrays+ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -