diff options
author | ben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-07-23 10:10:06 +0000 |
---|---|---|
committer | ben <ben@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-07-23 10:10:06 +0000 |
commit | f5b338b852ed80c7631aed7a6e48d92ff9dcb33b (patch) | |
tree | 3a934130993968882972f96f664355d8ebf47899 /libao2/ao_dxr2.c | |
parent | c2ade5351803cdd22bd834fb5d9feb218b0e2ee7 (diff) | |
download | mpv-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/ao_dxr2.c')
-rw-r--r-- | libao2/ao_dxr2.c | 21 |
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) |