comparison libao2/ao_mpegpes.c @ 30241:02b9c1a452e1

Add support for distinguishing between little- and big-endian SPDIF AC3 and converting between both.
author reimar
date Mon, 11 Jan 2010 20:27:52 +0000
parents 2eff450157cd
children ce6171e05d55
comparison
equal deleted inserted replaced
30240:1c55c7f6874b 30241:02b9c1a452e1
248 ao_data.channels=2; 248 ao_data.channels=2;
249 ao_data.outburst=2000; 249 ao_data.outburst=2000;
250 switch(format){ 250 switch(format){
251 case AF_FORMAT_S16_BE: 251 case AF_FORMAT_S16_BE:
252 case AF_FORMAT_MPEG2: 252 case AF_FORMAT_MPEG2:
253 case AF_FORMAT_AC3: 253 case AF_FORMAT_AC3_BE:
254 ao_data.format=format; 254 ao_data.format=format;
255 break;
256 case AF_FORMAT_AC3_LE:
257 ao_data.format=AF_FORMAT_AC3_BE;
255 break; 258 break;
256 default: 259 default:
257 ao_data.format=AF_FORMAT_S16_BE; 260 ao_data.format=AF_FORMAT_S16_BE;
258 } 261 }
259 262
331 else { 334 else {
332 int i; 335 int i;
333 unsigned short *s=data; 336 unsigned short *s=data;
334 // if(len>2000) len=2000; 337 // if(len>2000) len=2000;
335 // printf("ao_mpegpes: len=%d \n",len); 338 // printf("ao_mpegpes: len=%d \n",len);
336 if(ao_data.format==AF_FORMAT_AC3)
337 for(i=0;i<len/2;i++) s[i]=(s[i]>>8)|(s[i]<<8); // le<->be
338 send_mpeg_lpcm_packet(data, len, 0xA0, ao_data.pts, freq_id, my_ao_write); 339 send_mpeg_lpcm_packet(data, len, 0xA0, ao_data.pts, freq_id, my_ao_write);
339 } 340 }
340 return len; 341 return len;
341 } 342 }
342 343