Mercurial > mplayer.hg
changeset 19161:049c74156629
reuse send_mpeg_lpcm_packet() instead of the old packetizer
author | nicodvb |
---|---|
date | Sun, 23 Jul 2006 09:32:04 +0000 |
parents | ccb42ce33c23 |
children | 77662cf942bf |
files | libvo/vo_mpegpes.c |
diffstat | 1 files changed, 1 insertions(+), 78 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_mpegpes.c Sun Jul 23 09:05:10 2006 +0000 +++ b/libvo/vo_mpegpes.c Sun Jul 23 09:32:04 2006 +0000 @@ -233,84 +233,7 @@ } void send_lpcm_packet(unsigned char* data,int len,int id,unsigned int timestamp,int freq_id){ - - int ptslen=timestamp?5:0; - - // startcode: - pes_header[0]=pes_header[1]=0; - pes_header[2]=1; pes_header[3]=0xBD; - - while(len>=4){ - int payload_size; - - payload_size=PES_MAX_SIZE-6-20; // max possible data len - if(payload_size>len) payload_size=len; - payload_size&=(~3); // align! - - //if(6+payload_size>PES_MAX_SIZE) payload_size=PES_MAX_SIZE-6; - - // packetsize: - pes_header[4]=(payload_size+3+ptslen+7)>>8; - pes_header[5]=(payload_size+3+ptslen+7)&255; - - // stuffing: - // TTCCxxxx CC=css TT=type: 1=STD 0=mpeg1 2=vob - pes_header[6]=0x81; - - // FFxxxxxx FF=pts flags=2 vs 0 - pes_header[7]=ptslen ? 0x80 : 0; - - // hdrlen: - pes_header[8]=ptslen; - - if(ptslen){ - int x; - // presentation time stamp: - x=(0x02 << 4) | (((timestamp >> 30) & 0x07) << 1) | 1; - pes_header[9]=x; - x=((((timestamp >> 15) & 0x7fff) << 1) | 1); - pes_header[10]=x>>8; pes_header[11]=x&255; - x=((((timestamp) & 0x7fff) << 1) | 1); - pes_header[12]=x>>8; pes_header[13]=x&255; - } - -// ============ LPCM header: (7 bytes) ================= -// Info by mocm@convergence.de - -// ID: - pes_header[ptslen+9]=id; - -// number of frames: - pes_header[ptslen+10]=0x07; - -// first acces unit pointer, i.e. start of audio frame: - pes_header[ptslen+11]=0x00; - pes_header[ptslen+12]=0x04; - -// audio emphasis on-off 1 bit -// audio mute on-off 1 bit -// reserved 1 bit -// audio frame number 5 bit - pes_header[ptslen+13]=0x0C; - -// quantization word length 2 bit -// audio sampling frequency (48khz = 0, 96khz = 1) 2 bit -// reserved 1 bit -// number of audio channels - 1 (e.g. stereo = 1) 3 bit - pes_header[ptslen+14]=1|(freq_id<<4); - -// dynamic range control (0x80 if off) - pes_header[ptslen+15]=0x80; - - memcpy(&pes_header[6+3+ptslen+7],data,payload_size); - my_write(pes_header,6+3+ptslen+7+payload_size); - - len-=payload_size; data+=payload_size; - ptslen=0; // store PTS only once, at first packet! - } - -// printf("PES: draw frame! pts=%d size=%d \n",timestamp,len); - + send_mpeg_lpcm_packet(data, len, id, timestamp, freq_id, my_write); }