Changeset 35a3ceeb38571b5799fed8b56683640febb4b78d
- Timestamp:
- 17/05/03 22:30:31 (6 years ago)
- git-parent:
- Files:
-
- configure.ac.in (modified) (5 diffs)
- modules/access/Modules.am (modified) (1 diff)
- modules/access/cdda.c (added)
- modules/access/vcd/Modules.am (modified) (1 diff)
- modules/access/vcd/cdrom.c (modified) (12 diffs)
- modules/access/vcd/cdrom.h (modified) (3 diffs)
- modules/access/vcd/cdrom_internals.h (added)
- modules/access/vcd/vcd.c (modified) (13 diffs)
- modules/access/vcd/vcd.h (deleted)
- modules/codec/araw.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
configure.ac.in
r4525fff r35a3cee 86 86 LDFLAGS_dvdcss="${LDFLAGS_dvdcss} -ldvd" 87 87 LDFLAGS_vcd="${LDFLAGS_vcd} -ldvd" 88 LDFLAGS_cdda="${LDFLAGS_cdda} -ldvd" 88 89 ;; 89 90 x*bsd*) … … 1358 1359 AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[ 1359 1360 AC_MSG_RESULT(yes) 1360 PLUGINS="${PLUGINS} vcd "1361 PLUGINS="${PLUGINS} vcd cdda" 1361 1362 ],[ 1362 1363 AC_MSG_RESULT(no) … … 1366 1367 AC_EGREP_HEADER(scsireq,sys/scsiio.h,[ 1367 1368 AC_MSG_RESULT(yes) 1368 PLUGINS="${PLUGINS} vcd "1369 PLUGINS="${PLUGINS} vcd cdda" 1369 1370 AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support) 1370 1371 ],[ … … 1375 1376 AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[ 1376 1377 AC_MSG_RESULT(yes) 1377 PLUGINS="${PLUGINS} vcd "1378 PLUGINS="${PLUGINS} vcd cdda" 1378 1379 AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support) 1379 1380 ],[ … … 1383 1384 if test "x${SYS}" = "xbsdi" -o "x${SYS}" = "xmingw32" 1384 1385 then 1385 PLUGINS="${PLUGINS} vcd "1386 PLUGINS="${PLUGINS} vcd cdda" 1386 1387 fi 1387 1388 1388 1389 if test "x${SYS}" = "xdarwin" 1389 1390 then 1390 PLUGINS="${PLUGINS} vcd "1391 PLUGINS="${PLUGINS} vcd cdda" 1391 1392 LDFLAGS_vcd="${LDFLAGS_vcd} -framework IOKit -framework CoreFoundation" 1393 LDFLAGS_cdda="${LDFLAGS_cdda} -framework IOKit -framework CoreFoundation" 1392 1394 fi 1393 1395 fi modules/access/Modules.am
reb0eac0 r35a3cee 5 5 SOURCES_access_ftp = modules/access/ftp.c 6 6 SOURCES_slp = modules/access/slp.c 7 SOURCES_cdda = \ 8 modules/access/cdda.c \ 9 modules/access/vcd/cdrom.c \ 10 modules/access/vcd/cdrom.h \ 11 modules/access/vcd/cdrom_internals.h \ 12 $(NULL) modules/access/vcd/Modules.am
rc3a40bc r35a3cee 1 1 SOURCES_vcd = \ 2 2 modules/access/vcd/vcd.c \ 3 modules/access/vcd/vcd.h \4 3 modules/access/vcd/cdrom.c \ 5 4 modules/access/vcd/cdrom.h \ 5 modules/access/vcd/cdrom_internals.h \ 6 6 $(NULL) modules/access/vcd/cdrom.c
ra2d1d9f r35a3cee 3 3 ***************************************************************************** 4 4 * Copyright (C) 1998-2001 VideoLAN 5 * $Id: cdrom.c,v 1. 8 2003/03/10 00:12:53gbazin Exp $5 * $Id: cdrom.c,v 1.9 2003/05/17 20:30:31 gbazin Exp $ 6 6 * 7 7 * Authors: Johan Bilien <jobi@via.ecp.fr> … … 68 68 #endif 69 69 70 #include "cdrom_internals.h" 70 71 #include "cdrom.h" 71 #include "vcd.h"72 72 73 73 /***************************************************************************** … … 543 543 544 544 /**************************************************************************** 545 * ioctl_ReadSector: Read a sector (23 24 bytes)545 * ioctl_ReadSector: Read a sector (2352 bytes - i_start) 546 546 ****************************************************************************/ 547 547 int ioctl_ReadSector( vlc_object_t *p_this, const vcddev_t *p_vcddev, 548 int i_sector, byte_t * p_buffer ) 548 int i_sector, byte_t * p_buffer, size_t i_start, 549 size_t i_len ) 549 550 { 550 551 byte_t p_block[ VCD_SECTOR_SIZE ]; … … 570 571 571 572 /* We don't want to keep the header of the read sector */ 572 memcpy( p_buffer, p_block + VCD_DATA_START, VCD_DATA_SIZE);573 memcpy( p_buffer, p_block + i_start, i_len ); 573 574 574 575 return 0; … … 628 629 ssc.CDBByte[ 0 ] = READ_CD; 629 630 631 /* Sector type */ 632 ssc.CDBByte[ 1 ] = SECTOR_TYPE_MODE2_FORM2; 633 630 634 /* Start of LBA */ 631 635 ssc.CDBByte[ 2 ] = ( i_sector >> 24 ) & 0xff; … … 640 644 641 645 /* Data selection */ 642 ssc.CDBByte[ 9 ] = READ_CD_ USERDATA_MODE2;646 ssc.CDBByte[ 9 ] = READ_CD_RAW_MODE2; 643 647 644 648 /* Result buffer */ … … 663 667 return -1; 664 668 } 665 666 /* We don't want to keep the footer of the read sector */667 memcpy( p_buffer, p_block, VCD_DATA_SIZE );668 return 0;669 669 } 670 670 else … … 686 686 return -1; 687 687 } 688 689 /* We don't want to keep the header of the read sector */690 memcpy( p_buffer, p_block + VCD_DATA_START, VCD_DATA_SIZE );691 692 return 0;693 688 } 694 689 … … 699 694 int i_ret; 700 695 701 int sector_type = 5; /* mode2/form2 */702 int sync = 0,703 header_code = 0,704 user_data = 1,705 edc_ecc = 0,706 error_field = 0;707 int sub_channel = 0;708 709 696 memset( &sc, 0, sizeof(sc) ); 710 697 sc.cmd[0] = 0xBE; 711 sc.cmd[1] = (sector_type) <<2;698 sc.cmd[1] = SECTOR_TYPE_MODE2_FORM2; 712 699 sc.cmd[2] = (i_sector >> 24) & 0xff; 713 700 sc.cmd[3] = (i_sector >> 16) & 0xff; … … 717 704 sc.cmd[7] = (i_blocks >> 8) & 0xff; 718 705 sc.cmd[8] = (i_blocks >> 0) & 0xff; 719 sc.cmd[9] = (sync << 7) | (header_code << 5) | (user_data << 4) | 720 (edc_ecc << 3) | (error_field << 1); 721 sc.cmd[10] = sub_channel; 706 sc.cmd[9] = READ_CD_RAW_MODE2; 707 sc.cmd[10] = 0; /* sub channel */ 722 708 sc.cmdlen = 12; 723 709 sc.databuf = (caddr_t)p_block; 724 sc.datalen = VCD_SECTOR_SIZE; // was 2328 == VCD_DATA_SIZE + 4;710 sc.datalen = VCD_SECTOR_SIZE; 725 711 sc.senselen = sizeof( sc.sense ); 726 712 sc.flags = SCCMD_READ; … … 780 766 #endif 781 767 782 #if defined( HAVE_SCSIREQ_IN_SYS_SCSIIO_H )783 /* FIXME: is this ok? */784 memcpy( p_buffer, p_block, VCD_DATA_SIZE );785 #else786 768 /* We don't want to keep the header of the read sector */ 787 memcpy( p_buffer, p_block + VCD_DATA_START, VCD_DATA_SIZE ); 788 #endif 769 memcpy( p_buffer, p_block + i_start, i_len ); 789 770 790 771 return( 0 ); … … 833 814 834 815 /* Open the cue file and try to parse it */ 835 msg_Dbg( p_this," using .cue file: %s", psz_cuefile );816 msg_Dbg( p_this,"trying .cue file: %s", psz_cuefile ); 836 817 cuefile = fopen( psz_cuefile, "rt" ); 837 818 if( cuefile && fscanf( cuefile, "FILE %c", line ) && modules/access/vcd/cdrom.h
r63f553e r35a3cee 3 3 ***************************************************************************** 4 4 * Copyright (C) 1998-2001 VideoLAN 5 * $Id: cdrom.h,v 1. 4 2002/10/16 23:12:46 massiotExp $5 * $Id: cdrom.h,v 1.5 2003/05/17 20:30:31 gbazin Exp $ 6 6 * 7 7 * Authors: Johan Bilien <jobi@via.ecp.fr> … … 23 23 *****************************************************************************/ 24 24 25 /***************************************************************************** 26 * The vcddev structure 27 *****************************************************************************/ 28 typedef struct vcddev_s 29 { 30 char *psz_dev; /* vcd device name */ 25 /* where the data start on a VCD sector */ 26 #define VCD_DATA_START 24 27 /* size of the availablr data on a VCD sector */ 28 #define VCD_DATA_SIZE 2324 29 /* size of a VCD sector, header and tail included */ 30 #define VCD_SECTOR_SIZE 2352 31 /* size of a CD sector */ 32 #define CD_SECTOR_SIZE 2048 33 /* sector containing the entry points */ 34 #define VCD_ENTRIES_SECTOR 151 31 35 32 /* Section used in vcd image mode */ 33 int i_vcdimage_handle; /* vcd image file descriptor */ 34 int i_tracks; /* number of tracks of the vcd */ 35 int *p_sectors; /* tracks layout on the vcd */ 36 37 /* Section used in vcd device mode */ 38 39 #ifdef WIN32 40 HANDLE h_device_handle; /* vcd device descriptor */ 41 long hASPI; 42 short i_sid; 43 long (*lpSendCommand)( void* ); 44 45 #else 46 int i_device_handle; /* vcd device descriptor */ 47 #endif 48 49 } vcddev_t; 50 36 /* where the data start on a CDDA sector */ 37 #define CDDA_DATA_START 0 38 /* size of the availablr data on a CDDA sector */ 39 #define CDDA_DATA_SIZE 2352 40 /* size of a CDDA sector, header and tail included */ 41 #define CDDA_SECTOR_SIZE 2352 51 42 52 43 /***************************************************************************** … … 57 48 /* LBA = msf.frame + 75 * ( msf.second - 2 + 60 * msf.minute ) */ 58 49 #define MSF_TO_LBA2(min, sec, frame) ((int)frame + 75 * (sec -2 + 60 * min)) 50 /* Converts BCD to Binary data */ 51 #define BCD_TO_BIN(i) \ 52 (uint8_t)((uint8_t)(0xf & (uint8_t)i)+((uint8_t)10*((uint8_t)i >> 4))) 59 53 60 #ifndef O_BINARY 61 # define O_BINARY 0 62 #endif 63 64 #define VCDDEV_T 1 54 typedef struct vcddev_s vcddev_t; 65 55 66 56 /***************************************************************************** 67 * Platform specifics57 * structure to store minute/second/frame locations 68 58 *****************************************************************************/ 69 #if defined( SYS_DARWIN ) 70 #define darwin_freeTOC( p ) free( (void*)p ) 71 #define CD_MIN_TRACK_NO 01 72 #define CD_MAX_TRACK_NO 99 73 #endif 74 75 #if defined( WIN32 ) 76 77 /* Win32 DeviceIoControl specifics */ 78 #ifndef MAXIMUM_NUMBER_TRACKS 79 # define MAXIMUM_NUMBER_TRACKS 100 80 #endif 81 typedef struct _TRACK_DATA { 82 UCHAR Reserved; 83 UCHAR Control : 4; 84 UCHAR Adr : 4; 85 UCHAR TrackNumber; 86 UCHAR Reserved1; 87 UCHAR Address[4]; 88 } TRACK_DATA, *PTRACK_DATA; 89 typedef struct _CDROM_TOC { 90 UCHAR Length[2]; 91 UCHAR FirstTrack; 92 UCHAR LastTrack; 93 TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS]; 94 } CDROM_TOC, *PCDROM_TOC; 95 typedef enum _TRACK_MODE_TYPE { 96 YellowMode2, 97 XAForm2, 98 CDDA 99 } TRACK_MODE_TYPE, *PTRACK_MODE_TYPE; 100 typedef struct __RAW_READ_INFO { 101 LARGE_INTEGER DiskOffset; 102 ULONG SectorCount; 103 TRACK_MODE_TYPE TrackMode; 104 } RAW_READ_INFO, *PRAW_READ_INFO; 105 106 #ifndef IOCTL_CDROM_BASE 107 # define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM 108 #endif 109 #ifndef IOCTL_CDROM_READ_TOC 110 # define IOCTL_CDROM_READ_TOC CTL_CODE(IOCTL_CDROM_BASE, 0x0000, \ 111 METHOD_BUFFERED, FILE_READ_ACCESS) 112 #endif 113 #ifndef IOCTL_CDROM_RAW_READ 114 #define IOCTL_CDROM_RAW_READ CTL_CODE(IOCTL_CDROM_BASE, 0x000F, \ 115 METHOD_OUT_DIRECT, FILE_READ_ACCESS) 116 #endif 117 118 /* Win32 aspi specific */ 119 #define WIN_NT ( GetVersion() < 0x80000000 ) 120 #define ASPI_HAID 0 121 #define ASPI_TARGET 0 122 #define DTYPE_CDROM 0x05 123 124 #define SENSE_LEN 0x0E 125 #define SC_GET_DEV_TYPE 0x01 126 #define SC_EXEC_SCSI_CMD 0x02 127 #define SC_GET_DISK_INFO 0x06 128 #define SS_COMP 0x01 129 #define SS_PENDING 0x00 130 #define SS_NO_ADAPTERS 0xE8 131 #define SRB_DIR_IN 0x08 132 #define SRB_DIR_OUT 0x10 133 #define SRB_EVENT_NOTIFY 0x40 134 135 #define READ_CD 0xbe 136 #define SECTOR_TYPE_MODE2 0x14 137 #define READ_CD_USERDATA_MODE2 0x10 138 139 #define READ_TOC 0x43 140 #define READ_TOC_FORMAT_TOC 0x0 141 142 #pragma pack(1) 143 144 struct SRB_GetDiskInfo 59 typedef struct msf_s 145 60 { 146 unsigned char SRB_Cmd; 147 unsigned char SRB_Status; 148 unsigned char SRB_HaId; 149 unsigned char SRB_Flags; 150 unsigned long SRB_Hdr_Rsvd; 151 unsigned char SRB_Target; 152 unsigned char SRB_Lun; 153 unsigned char SRB_DriveFlags; 154 unsigned char SRB_Int13HDriveInfo; 155 unsigned char SRB_Heads; 156 unsigned char SRB_Sectors; 157 unsigned char SRB_Rsvd1[22]; 158 }; 159 160 struct SRB_GDEVBlock 161 { 162 unsigned char SRB_Cmd; 163 unsigned char SRB_Status; 164 unsigned char SRB_HaId; 165 unsigned char SRB_Flags; 166 unsigned long SRB_Hdr_Rsvd; 167 unsigned char SRB_Target; 168 unsigned char SRB_Lun; 169 unsigned char SRB_DeviceType; 170 unsigned char SRB_Rsvd1; 171 }; 172 173 struct SRB_ExecSCSICmd 174 { 175 unsigned char SRB_Cmd; 176 unsigned char SRB_Status; 177 unsigned char SRB_HaId; 178 unsigned char SRB_Flags; 179 unsigned long SRB_Hdr_Rsvd; 180 unsigned char SRB_Target; 181 unsigned char SRB_Lun; 182 unsigned short SRB_Rsvd1; 183 unsigned long SRB_BufLen; 184 unsigned char *SRB_BufPointer; 185 unsigned char SRB_SenseLen; 186 unsigned char SRB_CDBLen; 187 unsigned char SRB_HaStat; 188 unsigned char SRB_TargStat; 189 unsigned long *SRB_PostProc; 190 unsigned char SRB_Rsvd2[20]; 191 unsigned char CDBByte[16]; 192 unsigned char SenseArea[SENSE_LEN+2]; 193 }; 194 195 #pragma pack() 196 #endif /* WIN32 */ 197 61 uint8_t minute; 62 uint8_t second; 63 uint8_t frame; 64 } msf_t; 198 65 199 66 /***************************************************************************** 200 * Local Prototypes67 * entries_sect structure: the sector containing entry points 201 68 *****************************************************************************/ 202 static int OpenVCDImage( vlc_object_t *, const char *, vcddev_t * ); 203 static void CloseVCDImage( vlc_object_t *, vcddev_t * ); 69 typedef struct entries_sect_s 70 { 71 uint8_t psz_id[8]; /* "ENTRYVCD" */ 72 uint8_t i_version; /* 0x02 VCD2.0 73 0x01 SVCD */ 74 uint8_t i_sys_prof_tag; /* 0x01 if VCD1.1 75 0x00 else */ 76 uint16_t i_entries_nb; /* entries number <= 500 */ 204 77 205 #if defined( SYS_DARWIN ) 206 static CDTOC *darwin_getTOC( vlc_object_t *, const vcddev_t * ); 207 static int darwin_getNumberOfDescriptors( CDTOC * ); 208 static int darwin_getNumberOfTracks( CDTOC *, int ); 78 struct 79 { 80 uint8_t i_track; /* track number */ 81 msf_t msf; /* msf location 82 (in BCD format) */ 83 } entry[500]; 84 uint8_t zeros[36]; /* should be 0x00 */ 85 } entries_sect_t; 209 86 210 #elif defined( WIN32 ) 211 static int win32_vcd_open( vlc_object_t *, const char *, vcddev_t * ); 212 #endif 87 /***************************************************************************** 88 * Prototypes 89 *****************************************************************************/ 90 vcddev_t *ioctl_Open ( vlc_object_t *, const char * ); 91 void ioctl_Close ( vlc_object_t *, vcddev_t * ); 92 int ioctl_GetTracksMap ( vlc_object_t *, const vcddev_t *, int ** ); 93 int ioctl_ReadSector ( vlc_object_t *, const vcddev_t *, 94 int, byte_t *, size_t, size_t ); modules/access/vcd/vcd.c
r30336bb r35a3cee 3 3 ***************************************************************************** 4 4 * Copyright (C) 2000 VideoLAN 5 * $Id: vcd.c,v 1. 19 2003/05/04 22:42:15gbazin Exp $5 * $Id: vcd.c,v 1.20 2003/05/17 20:30:31 gbazin Exp $ 6 6 * 7 7 * Author: Johan Bilien <jobi@via.ecp.fr> … … 39 39 #include <string.h> 40 40 41 #include " vcd.h"41 #include "cdrom.h" 42 42 43 43 /* how many blocks VCDRead will read in each loop */ … … 102 102 int i_title = 1; 103 103 int i_chapter = 1; 104 105 p_input->pf_read = VCDRead; 106 p_input->pf_seek = VCDSeek; 107 p_input->pf_set_area = VCDSetArea; 108 p_input->pf_set_program = VCDSetProgram; 104 vcddev_t *vcddev; 109 105 110 106 #ifdef WIN32 … … 155 151 } 156 152 153 /* Open VCD */ 154 if( !(vcddev = ioctl_Open( p_this, psz_source )) ) 155 { 156 msg_Warn( p_input, "could not open %s", psz_source ); 157 free( psz_source ); 158 return -1; 159 } 160 157 161 p_vcd = malloc( sizeof(thread_vcd_data_t) ); 158 159 162 if( p_vcd == NULL ) 160 163 { … … 163 166 return -1; 164 167 } 165 168 free( psz_source ); 169 170 p_vcd->vcddev = vcddev; 166 171 p_input->p_access_data = (void *)p_vcd; 167 172 … … 169 174 170 175 vlc_mutex_lock( &p_input->stream.stream_lock ); 171 172 176 p_input->stream.b_pace_control = 1; 173 177 p_input->stream.b_seekable = 1; 174 178 p_input->stream.p_selected_area->i_size = 0; 175 179 p_input->stream.p_selected_area->i_tell = 0; 176 177 180 vlc_mutex_unlock( &p_input->stream.stream_lock ); 178 179 if( !(p_vcd->vcddev = ioctl_Open( p_this, psz_source )) )180 {181 msg_Warn( p_input, "could not open %s", psz_source );182 free( psz_source );183 free( p_vcd );184 return -1;185 }186 181 187 182 /* We read the Table Of Content information */ 188 183 p_vcd->i_nb_tracks = ioctl_GetTracksMap( VLC_OBJECT(p_input), 189 184 p_vcd->vcddev, &p_vcd->p_sectors ); 190 free( psz_source );191 185 if( p_vcd->i_nb_tracks < 0 ) 192 186 msg_Err( p_input, "unable to count tracks" ); … … 259 253 } 260 254 255 p_input->pf_read = VCDRead; 256 p_input->pf_seek = VCDSeek; 257 p_input->pf_set_area = VCDSetArea; 258 p_input->pf_set_program = VCDSetProgram; 259 261 260 return 0; 262 261 } … … 300 299 { 301 300 if ( ioctl_ReadSector( VLC_OBJECT(p_input), p_vcd->vcddev, 302 p_vcd->i_sector, p_buffer + i_index * VCD_DATA_SIZE ) < 0 ) 301 p_vcd->i_sector, p_buffer + i_index * VCD_DATA_SIZE, 302 VCD_DATA_START, VCD_DATA_SIZE ) < 0 ) 303 303 { 304 304 msg_Err( p_input, "could not read sector %d", p_vcd->i_sector ); … … 353 353 { 354 354 if ( ioctl_ReadSector( VLC_OBJECT(p_input), p_vcd->vcddev, 355 p_vcd->i_sector, p_last_sector ) < 0 ) 355 p_vcd->i_sector, p_last_sector, VCD_DATA_START, 356 VCD_DATA_SIZE ) < 0 ) 356 357 { 357 358 msg_Err( p_input, "could not read sector %d", p_vcd->i_sector ); … … 367 368 } 368 369 369 370 370 /***************************************************************************** 371 371 * VCDSetProgram: Does nothing since a VCD is mono_program … … 376 376 return 0; 377 377 } 378 379 378 380 379 /***************************************************************************** … … 443 442 return 0; 444 443 } 445 446 444 447 445 /**************************************************************************** … … 503 501 504 502 if( ioctl_ReadSector( VLC_OBJECT(p_input), p_vcd->vcddev, 505 VCD_ENTRIES_SECTOR, p_sector) < 0 )503 VCD_ENTRIES_SECTOR, p_sector, VCD_DATA_START, VCD_DATA_SIZE ) < 0 ) 506 504 { 507 505 msg_Err( p_input, "could not read entry points sector" ); modules/codec/araw.c
r9546699 r35a3cee 3 3 ***************************************************************************** 4 4 * Copyright (C) 2001, 2002 VideoLAN 5 * $Id: araw.c,v 1.1 4 2003/03/11 17:40:40 fenrirExp $5 * $Id: araw.c,v 1.15 2003/05/17 20:30:31 gbazin Exp $ 6 6 * 7 7 * Authors: Laurent Aimar <fenrir@via.ecp.fr> … … 40 40 { 41 41 WAVEFORMATEX *p_wf; 42 43 /* The bit stream structure handles the PES stream at the bit level */44 // bit_stream_t bit_stream;45 42 46 43 /* Input properties */ … … 245 242 static int InitThread( adec_thread_t * p_adec ) 246 243 { 247 if( ( p_adec->p_wf = (WAVEFORMATEX*)p_adec->p_fifo->p_waveformatex ) == NULL ) 244 if( ( p_adec->p_wf = (WAVEFORMATEX*)p_adec->p_fifo->p_waveformatex ) 245 == NULL ) 248 246 { 249 247 msg_Err( p_adec->p_fifo, "unknown raw format" ); … … 262 260 263 261 msg_Dbg( p_adec->p_fifo, 264 "raw format: samplerate:%dHz channels:%d bits/sample:%d blockalign:%d", 262 "raw format: samplerate:%dHz channels:%d bits/sample:%d " 263 "blockalign:%d", 265 264 p_adec->p_wf->nSamplesPerSec, 266 265 p_adec->p_wf->nChannels, … … 363 362 p_adec->output_format.i_rate = p_adec->p_wf->nSamplesPerSec; 364 363 365 if( p_adec->p_wf->nChannels <= 0 || 366 p_adec->p_wf->nChannels > 5 ) 364 if( p_adec->p_wf->nChannels <= 0 || p_adec->p_wf->nChannels > 5 ) 367 365 { 368 366 msg_Err( p_adec->p_fifo, "bad channels count(1-5)" ); … … 387 385 } 388 386 389 /* Init the BitStream */390 // InitBitstream( &p_adec->bit_stream, p_adec->p_fifo,391 // NULL, NULL );392 393 387 return( 0 ); 394 388 } … … 406 400 { 407 401 408 i_copy = __MIN( p_data->p_payload_end - p_data->p_payload_start, i_max - i_count ); 402 i_copy = __MIN( p_data->p_payload_end - p_data->p_payload_start, 403 i_max - i_count ); 409 404 410 405 if( i_copy > 0 ) … … 456 451 } 457 452 458 i_samples = i_size / 459 ( ( p_adec->p_wf->wBitsPerSample + 7 ) / 8 ) / 453 i_samples = i_size / ( ( p_adec->p_wf->wBitsPerSample + 7 ) / 8 ) / 460 454 p_adec->p_wf->nChannels; 461 455 462 // msg_Warn( p_adec->p_fifo, "got %d samples (%d bytes)", i_samples, i_size );463 456 p_adec->pts = p_pes->i_pts; 464 457 … … 512 505 else 513 506 { 514 memcpy( p_aout_buffer->p_buffer, 515 p, 507 memcpy( p_aout_buffer->p_buffer, p, 516 508 p_aout_buffer->i_nb_bytes ); 517 509 … … 528 520 } 529 521 530 531 522 /***************************************************************************** 532 523 * EndThread : faad decoder thread destruction … … 543 534 free( p_adec ); 544 535 } 545 546
