summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authorben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-07-23 10:10:06 +0000
committerben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-07-23 10:10:06 +0000
commitf5b338b852ed80c7631aed7a6e48d92ff9dcb33b (patch)
tree3a934130993968882972f96f664355d8ebf47899 /libao2
parentc2ade5351803cdd22bd834fb5d9feb218b0e2ee7 (diff)
downloadmpv-f5b338b852ed80c7631aed7a6e48d92ff9dcb33b.tar.bz2
mpv-f5b338b852ed80c7631aed7a6e48d92ff9dcb33b.tar.xz
use mpeg packetizer helpers for sending lpcm packets
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19169 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/ao_dxr2.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/libao2/ao_dxr2.c b/libao2/ao_dxr2.c
index 6d2ad7cbd3..013173e37a 100644
--- a/libao2/ao_dxr2.c
+++ b/libao2/ao_dxr2.c
@@ -26,6 +26,7 @@ static ao_info_t info =
LIBAO_EXTERN(dxr2)
static int volume=19;
+static int last_freq_id = -1;
extern int dxr2_fd;
// to set/get/query special features/parameters
@@ -72,6 +73,8 @@ 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;
@@ -151,12 +154,28 @@ static int get_space(void){
return y;
}
+static void dxr2_send_lpcm_packet(unsigned char* data,int len,int id,unsigned int timestamp,int freq_id)
+{
+ extern int write_dxr2(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){
extern int write_dxr2(unsigned char *data, int len);
- extern void dxr2_send_lpcm_packet(unsigned char* data,int len,int id,int timestamp,int freq_id);
// MPEG and AC3 don't work :-(
if(ao_data.format==AF_FORMAT_MPEG2)