mirror of
https://github.com/mpv-player/mpv
synced 2024-07-31 16:29:58 +02:00
applied 'fakemono' patch by Bryan Chan scorpio@acm.org
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@733 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
3040f42cd6
commit
a158f5d747
@ -18,6 +18,9 @@ extern char *sdl_driver;
|
|||||||
extern int sdl_noxv;
|
extern int sdl_noxv;
|
||||||
extern int sdl_forcexv;
|
extern int sdl_forcexv;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
extern int fakemono; // defined in dec_audio.c
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int vo_dbpp;
|
extern int vo_dbpp;
|
||||||
extern int osd_level;
|
extern int osd_level;
|
||||||
@ -76,6 +79,9 @@ struct config conf[]={
|
|||||||
{"aid", &audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 256},
|
{"aid", &audio_id, CONF_TYPE_INT, CONF_RANGE, 0, 256},
|
||||||
{"vid", &video_id, CONF_TYPE_INT, CONF_RANGE, 0, 256},
|
{"vid", &video_id, CONF_TYPE_INT, CONF_RANGE, 0, 256},
|
||||||
{"sid", &dvdsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 32},
|
{"sid", &dvdsub_id, CONF_TYPE_INT, CONF_RANGE, 0, 32},
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
{"stereo", &fakemono, CONF_TYPE_INT, CONF_RANGE, 0, 2},
|
||||||
|
#endif
|
||||||
|
|
||||||
{"dumpfile", &stream_dump_name, CONF_TYPE_STRING, 0, 0, 0},
|
{"dumpfile", &stream_dump_name, CONF_TYPE_STRING, 0, 0, 0},
|
||||||
{"dumpaudio", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 1},
|
{"dumpaudio", &stream_dump_type, CONF_TYPE_FLAG, 0, 0, 1},
|
||||||
|
7
configure
vendored
7
configure
vendored
@ -1011,6 +1011,13 @@ cat > $CCONF << EOF
|
|||||||
buffer problems, but it seems to be useful for every soundcard drivers) */
|
buffer problems, but it seems to be useful for every soundcard drivers) */
|
||||||
#define ALSA_TIMER
|
#define ALSA_TIMER
|
||||||
|
|
||||||
|
/* Undefine this if you don't want to select mono audio (left or right)
|
||||||
|
with a stereo MPEG layer 2/3 audio stream. The command-line option
|
||||||
|
-stereo has three possible values (0 for stereo, 1 for left-only, 2 for
|
||||||
|
right-only), with 0 being the default.
|
||||||
|
*/
|
||||||
|
#define USE_FAKE_MONO
|
||||||
|
|
||||||
/* Undefine this if your soundcard driver has no working select().
|
/* Undefine this if your soundcard driver has no working select().
|
||||||
If you have kernel Oops, player hangups, or just no audio, you should
|
If you have kernel Oops, player hangups, or just no audio, you should
|
||||||
try to recompile MPlayer with this option disabled! */
|
try to recompile MPlayer with this option disabled! */
|
||||||
|
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
extern int verbose; // defined in mplayer.c
|
extern int verbose; // defined in mplayer.c
|
||||||
|
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
int fakemono=0;
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "stream.h"
|
#include "stream.h"
|
||||||
#include "demuxer.h"
|
#include "demuxer.h"
|
||||||
|
|
||||||
@ -157,7 +161,11 @@ case 6: {
|
|||||||
}
|
}
|
||||||
case 1: {
|
case 1: {
|
||||||
// MPEG Audio:
|
// MPEG Audio:
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
MP3_Init(fakemono);
|
||||||
|
#else
|
||||||
MP3_Init();
|
MP3_Init();
|
||||||
|
#endif
|
||||||
MP3_samplerate=MP3_channels=0;
|
MP3_samplerate=MP3_channels=0;
|
||||||
// printf("[\n");
|
// printf("[\n");
|
||||||
sh_audio->a_buffer_len=MP3_DecodeFrame(sh_audio->a_buffer,-1);
|
sh_audio->a_buffer_len=MP3_DecodeFrame(sh_audio->a_buffer,-1);
|
||||||
|
@ -25,6 +25,9 @@ static char* help_text=
|
|||||||
#else
|
#else
|
||||||
" -alsa enable timing code (works better with ALSA)\n"
|
" -alsa enable timing code (works better with ALSA)\n"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
" -stereo select MPEG1 stereo output (0:stereo 1:left 2:right)\n"
|
||||||
|
#endif
|
||||||
" -aid <id> select audio channel [MPG: 0-31 AVI: 1-99]\n"
|
" -aid <id> select audio channel [MPG: 0-31 AVI: 1-99]\n"
|
||||||
" -vid <id> select video channel [MPG: 0-15 AVI: -- ]\n"
|
" -vid <id> select video channel [MPG: 0-15 AVI: -- ]\n"
|
||||||
" -fps <value> force frame rate (if value is wrong in the header)\n"
|
" -fps <value> force frame rate (if value is wrong in the header)\n"
|
||||||
|
@ -72,6 +72,40 @@ static int synth_1to1_mono2stereo(real *bandPtr,unsigned char *samples,int *pnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
static int synth_1to1_l(real *bandPtr,int channel,unsigned char *out,int *pnt)
|
||||||
|
{
|
||||||
|
int i,ret;
|
||||||
|
|
||||||
|
ret = synth_1to1(bandPtr,channel,out,pnt);
|
||||||
|
out = out + *pnt - 128;
|
||||||
|
|
||||||
|
for(i=0;i<32;i++) {
|
||||||
|
((short *)out)[1] = ((short *)out)[0];
|
||||||
|
out+=4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int synth_1to1_r(real *bandPtr,int channel,unsigned char *out,int *pnt)
|
||||||
|
{
|
||||||
|
int i,ret;
|
||||||
|
|
||||||
|
ret = synth_1to1(bandPtr,channel,out,pnt);
|
||||||
|
out = out + *pnt - 128;
|
||||||
|
|
||||||
|
for(i=0;i<32;i++) {
|
||||||
|
((short *)out)[0] = ((short *)out)[1];
|
||||||
|
out+=4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
|
static int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
|
||||||
{
|
{
|
||||||
static real buffs[2][2][0x110];
|
static real buffs[2][2][0x110];
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
/* MP3 Player Library 2.0 (C) 1999 A'rpi/Astral&ESP-team */
|
/* MP3 Player Library 2.0 (C) 1999 A'rpi/Astral&ESP-team */
|
||||||
|
|
||||||
/* decoder level: */
|
/* decoder level: */
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
extern void MP3_Init(int fakemono);
|
||||||
|
#else
|
||||||
extern void MP3_Init();
|
extern void MP3_Init();
|
||||||
|
#endif
|
||||||
extern int MP3_Open(char *filename,int buffsize);
|
extern int MP3_Open(char *filename,int buffsize);
|
||||||
extern void MP3_SeekFrame(int num,int dir);
|
extern void MP3_SeekFrame(int num,int dir);
|
||||||
extern void MP3_SeekForward(int num);
|
extern void MP3_SeekForward(int num);
|
||||||
|
13
mp3lib/sr1.c
13
mp3lib/sr1.c
@ -348,7 +348,11 @@ retry1:
|
|||||||
static int tables_done_flag=0;
|
static int tables_done_flag=0;
|
||||||
|
|
||||||
// Init decoder tables. Call first, once!
|
// Init decoder tables. Call first, once!
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
void MP3_Init(int fakemono){
|
||||||
|
#else
|
||||||
void MP3_Init(){
|
void MP3_Init(){
|
||||||
|
#endif
|
||||||
_CpuID=CpuDetect();
|
_CpuID=CpuDetect();
|
||||||
_i586=ipentium();
|
_i586=ipentium();
|
||||||
#ifdef HAVE_3DNOW
|
#ifdef HAVE_3DNOW
|
||||||
@ -362,7 +366,16 @@ void MP3_Init(){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
make_decode_tables(outscale);
|
make_decode_tables(outscale);
|
||||||
|
#ifdef USE_FAKE_MONO
|
||||||
|
if (fakemono == 1)
|
||||||
|
fr.synth=synth_1to1_l;
|
||||||
|
else if (fakemono == 2)
|
||||||
|
fr.synth=synth_1to1_r;
|
||||||
|
else
|
||||||
|
fr.synth=synth_1to1;
|
||||||
|
#else
|
||||||
fr.synth=synth_1to1;
|
fr.synth=synth_1to1;
|
||||||
|
#endif
|
||||||
fr.synth_mono=synth_1to1_mono2stereo;
|
fr.synth_mono=synth_1to1_mono2stereo;
|
||||||
fr.down_sample=0;
|
fr.down_sample=0;
|
||||||
fr.down_sample_sblimit = SBLIMIT>>(fr.down_sample);
|
fr.down_sample_sblimit = SBLIMIT>>(fr.down_sample);
|
||||||
|
Loading…
Reference in New Issue
Block a user