summaryrefslogtreecommitdiffstats
path: root/libao2/ao_dxr2.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-31 04:30:08 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-31 16:03:10 +0200
commitb138ca43caee2115778ad9e039dcfdeddf5bfbb9 (patch)
treeab3ea44c49899b178399224fc14e268c8546aad0 /libao2/ao_dxr2.c
parent6d534cd3cb5ca12d41f53345e92b9ab594971406 (diff)
downloadmpv-b138ca43caee2115778ad9e039dcfdeddf5bfbb9.tar.bz2
mpv-b138ca43caee2115778ad9e039dcfdeddf5bfbb9.tar.xz
vo_dxr2, ao_dxr2: drop dxr2 support
dxr2 support had been broken quite a while and nobody noticed. There were finally commits to fix it in the svn repo, but rather than apply those I'll just drop dxr2 support.
Diffstat (limited to 'libao2/ao_dxr2.c')
-rw-r--r--libao2/ao_dxr2.c221
1 files changed, 0 insertions, 221 deletions
diff --git a/libao2/ao_dxr2.c b/libao2/ao_dxr2.c
deleted file mode 100644
index cac669db58..0000000000
--- a/libao2/ao_dxr2.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * DXR2 audio output driver
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <inttypes.h>
-#include <dxr2ioctl.h>
-#include "config.h"
-#include "mp_msg.h"
-#include "libavutil/common.h"
-#include "mpbswap.h"
-
-#include "audio_out.h"
-#include "audio_out_internal.h"
-#include "libaf/af_format.h"
-#include "libmpdemux/mpeg_packetizer.h"
-
-
-static const ao_info_t info =
-{
- "DXR2 audio output",
- "dxr2",
- "Tobias Diedrich <ranma+mplayer@tdiedrich.de>",
- ""
-};
-
-LIBAO_EXTERN(dxr2)
-
-static int volume=19;
-static int last_freq_id = -1;
-extern int dxr2_fd;
-
-// to set/get/query special features/parameters
-static int control(int cmd,void *arg){
- switch(cmd){
- case AOCONTROL_GET_VOLUME:
- if(dxr2_fd > 0) {
- ao_control_vol_t* vol = (ao_control_vol_t*)arg;
- vol->left = vol->right = volume * 19.0 / 100.0;
- return CONTROL_OK;
- }
- return CONTROL_ERROR;
- case AOCONTROL_SET_VOLUME:
- if(dxr2_fd > 0) {
- dxr2_oneArg_t v;
- float diff;
- ao_control_vol_t* vol = (ao_control_vol_t*)arg;
- // We need this trick because the volume stepping is often too small
- diff = ((vol->left+vol->right) / 2 - (volume*19.0/100.0)) * 19.0 / 100.0;
- v.arg = volume + (diff > 0 ? ceil(diff) : floor(diff));
- if(v.arg > 19) v.arg = 19;
- if(v.arg < 0) v.arg = 0;
- if(v.arg != volume) {
- volume = v.arg;
- if( ioctl(dxr2_fd,DXR2_IOC_SET_AUDIO_VOLUME,&v) < 0) {
- mp_tmsg(MSGT_AO,MSGL_ERR,"[AO DXR2] Setting volume to %d failed.\n",volume);
- return CONTROL_ERROR;
- }
- }
- return CONTROL_OK;
- }
- return CONTROL_ERROR;
- }
- return CONTROL_UNKNOWN;
-}
-
-static int freq=0;
-static int freq_id=0;
-
-// open & setup audio device
-// return: 1=success 0=fail
-static int init(int rate,int channels,int format,int flags){
-
- if(dxr2_fd <= 0)
- return 0;
-
- last_freq_id = -1;
-
- ao_data.outburst=2048;
- ao_data.samplerate=rate;
- ao_data.channels=channels;
- ao_data.buffersize=2048;
- ao_data.bps=rate*4;
- ao_data.format=format;
- freq=rate;
-
- switch(rate){
- case 48000:
- freq_id=DXR2_AUDIO_FREQ_48;
- break;
- case 96000:
- freq_id=DXR2_AUDIO_FREQ_96;
- break;
- case 44100:
- freq_id=DXR2_AUDIO_FREQ_441;
- break;
- case 32000:
- freq_id=DXR2_AUDIO_FREQ_32;
- break;
- case 22050:
- freq_id=DXR2_AUDIO_FREQ_2205;
- break;
-#ifdef DXR2_AUDIO_FREQ_24
- // This is not yet in the dxr2 driver CVS
- // you can get the patch at
- // http://www.tdiedrich.de/~ranma/patches/dxr2.pcm1723.20020513
- case 24000:
- freq_id=DXR2_AUDIO_FREQ_24;
- break;
- case 64000:
- freq_id=DXR2_AUDIO_FREQ_64;
- break;
- case 88200:
- freq_id=DXR2_AUDIO_FREQ_882;
- break;
-#endif
- default:
- mp_tmsg(MSGT_AO,MSGL_ERR,"[AO DXR2] %d Hz not supported, try to resample.\n",rate);
- return 0;
- }
-
- return 1;
-}
-
-// close audio device
-static void uninit(int immed){
-
-}
-
-// stop playing and empty buffers (for seeking/pause)
-static void reset(void){
-
-}
-
-// stop playing, keep buffers (for pause)
-static void audio_pause(void)
-{
- // for now, just call reset();
- reset();
-}
-
-// resume playing, after audio_pause()
-static void audio_resume(void)
-{
-}
-
-extern int vo_pts;
-// return: how many bytes can be played without blocking
-static int get_space(void){
- float x=(float)(vo_pts-ao_data.pts)/90000.0;
- int y;
- if(x<=0) return 0;
- y=freq*4*x;y/=ao_data.outburst;y*=ao_data.outburst;
- if(y>32768) y=32768;
- return y;
-}
-
-static void dxr2_send_lpcm_packet(unsigned char* data,int len,int id,unsigned int timestamp,int freq_id)
-{
- int write_dxr2(const unsigned char *data, int len);
-
- if(dxr2_fd < 0) {
- mp_msg(MSGT_AO,MSGL_ERR,"DXR2 fd is not valid\n");
- return;
- }
-
- if(last_freq_id != freq_id) {
- ioctl(dxr2_fd, DXR2_IOC_SET_AUDIO_SAMPLE_FREQUENCY, &freq_id);
- last_freq_id = freq_id;
- }
-
- send_mpeg_lpcm_packet (data, len, id, timestamp, freq_id, write_dxr2);
-}
-
-// plays 'len' bytes of 'data'
-// it should round it down to outburst*n
-// return: number of bytes played
-static int play(void* data,int len,int flags){
- int write_dxr2(const unsigned char *data, int len);
-
- // MPEG and AC3 don't work :-(
- if(ao_data.format==AF_FORMAT_MPEG2)
- send_mpeg_ps_packet (data, len, 0xC0, ao_data.pts, 2, write_dxr2);
- else if(AF_FORMAT_IS_AC3(ao_data.format))
- send_mpeg_ps_packet (data, len, 0x80, ao_data.pts, 2, write_dxr2);
- else {
- int i;
- //unsigned short *s=data;
- uint16_t *s=data;
-#if !HAVE_BIGENDIAN
- for(i=0;i<len/2;i++) s[i] = bswap_16(s[i]);
-#endif
- dxr2_send_lpcm_packet(data,len,0xA0,ao_data.pts-10000,freq_id);
- }
- return len;
-}
-
-// return: delay in seconds between first and last sample in buffer
-static float get_delay(void){
-
- return 0.0;
-}