?? libwma.patch
字號:
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 + -