Lines Matching defs:psf

89 static int sd2_close	(SF_PRIVATE *psf) ;
91 static int sd2_parse_rsrc_fork (SF_PRIVATE *psf) ;
92 static int parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc) ;
94 static int sd2_write_rsrc_fork (SF_PRIVATE *psf, int calc_length) ;
101 sd2_open (SF_PRIVATE *psf)
105 psf->endian = SF_ENDIAN_BIG ;
107 if (psf->file.mode == SFM_READ || (psf->file.mode == SFM_RDWR && psf->rsrclength > 0))
108 { psf_use_rsrc (psf, SF_TRUE) ;
109 valid = psf_file_valid (psf) ;
110 psf_use_rsrc (psf, SF_FALSE) ;
112 { psf_log_printf (psf, "sd2_open : psf->rsrc.filedes < 0\n") ;
116 error = sd2_parse_rsrc_fork (psf) ;
122 if ((SF_CONTAINER (psf->sf.format)) != SF_FORMAT_SD2)
127 subformat = SF_CODEC (psf->sf.format) ;
128 psf->dataoffset = 0 ;
131 if (psf->file.mode == SFM_WRITE || (psf->file.mode == SFM_RDWR && psf->rsrclength == 0))
132 { psf->rsrc.mode = psf->file.mode ;
133 psf_open_rsrc (psf) ;
135 error = sd2_write_rsrc_fork (psf, SF_FALSE) ;
141 psf->write_header = NULL ;
144 psf->container_close = sd2_close ;
146 psf->blockwidth = psf->bytewidth * psf->sf.channels ;
153 error = pcm_init (psf) ;
161 psf_fseek (psf, psf->dataoffset, SEEK_SET) ;
166 psf_close_rsrc (psf) ;
175 sd2_close (SF_PRIVATE *psf)
177 if (psf->file.mode == SFM_WRITE)
191 sd2_write_rsrc_fork (SF_PRIVATE *psf, int UNUSED (calc_length))
202 psf_use_rsrc (psf, SF_TRUE) ;
206 rsrc.sample_rate = psf->sf.samplerate ;
207 rsrc.sample_size = psf->bytewidth ;
208 rsrc.channels = psf->sf.channels ;
210 rsrc.rsrc_data = psf->header.ptr ;
211 rsrc.rsrc_len = psf->header.len ;
241 psf_binheader_writef (psf, "E444", BHW4 (rsrc.data_offset), BHW4 (rsrc.map_offset), BHW4 (rsrc.data_length)) ;
243 psf_binheader_writef (psf, "Eop", BHWo (0x30), BHWp (psf->file.name)) ;
244 psf_binheader_writef (psf, "Eo2mm", BHWo (0x50), BHW2 (0), BHWm (Sd2f_MARKER), BHWm (lsf1_MARKER)) ;
247 psf_binheader_writef (psf, "E4444", BHW4 (rsrc.map_offset), BHW4 (rsrc.data_offset), BHW4 (rsrc.map_offset), BHW4 (rsrc.data_length)) ;
251 { psf_binheader_writef (psf, "Eo1422", BHWo (rsrc.map_offset + 16), BHW1 (1), BHW4 (0x12345678), BHW2 (0xabcd), BHW2 (0)) ;
256 psf_binheader_writef (psf, "Eo2", BHWo (rsrc.map_offset + 24), BHW2 (rsrc.type_offset - rsrc.map_offset - 2)) ;
260 psf_binheader_writef (psf, "Eo2", BHWo (rsrc.map_offset + 28), BHW2 (rsrc.type_count - 1)) ;
266 psf_binheader_writef (psf, "Eo2", BHWo (rsrc.map_offset + 26), BHW2 (rsrc.string_offset)) ;
270 psf_binheader_writef (psf, "Eom22", BHWo (rsrc.type_offset), BHWm (STR_MARKER), BHW2 (rsrc.str_count - 1), BHW2 (0x12)) ;
273 psf_binheader_writef (psf, "Em22", BHWm (sdML_MARKER), BHW2 (0), BHW2 (0x36)) ;
279 { psf_binheader_writef (psf, "Eop", BHWo (str_offset), BHWp (str_rsrc [k].name)) ;
280 psf_binheader_writef (psf, "Eo22", BHWo (rsrc.item_offset + k * 12), BHW2 (str_rsrc [k].id), BHW2 (next_str)) ;
285 psf_binheader_writef (psf, "Eo4", BHWo (rsrc.item_offset + k * 12 + 4), BHW4 (data_offset - rsrc.data_offset)) ;
286 psf_binheader_writef (psf, "Eo4", BHWo (data_offset), BHW4 (str_rsrc [k].value_len)) ;
288 psf_binheader_writef (psf, "Eob", BHWo (data_offset + 4), BHWv (str_rsrc [k].value), BHWz (str_rsrc [k].value_len)) ;
294 psf_binheader_writef (psf, "Eo4o4", BHWo (12), BHW4 (rsrc.map_length),
297 psf->header.indx = rsrc.map_offset + rsrc.map_length ;
299 psf_fwrite (psf->header.ptr, psf->header.indx, 1, psf) ;
301 psf_use_rsrc (psf, SF_FALSE) ;
303 if (psf->error)
304 return psf->error ;
370 sd2_parse_rsrc_fork (SF_PRIVATE *psf)
374 psf_use_rsrc (psf, SF_TRUE) ;
378 rsrc.rsrc_len = psf_get_filelen (psf) ;
379 psf_log_printf (psf, "Resource length : %d (0x%04X)\n", rsrc.rsrc_len, rsrc.rsrc_len) ;
381 if (rsrc.rsrc_len > psf->header.len)
387 rsrc.rsrc_data = psf->header.ptr ;
388 // rsrc.rsrc_len > psf->header.len ;
393 psf_fread (rsrc.rsrc_data, rsrc.rsrc_len, 1, psf) ;
396 psf->header.indx = psf->header.end = rsrc.rsrc_len ;
404 { psf_log_printf (psf, "Trying offset of 0x52 bytes.\n") ;
411 psf_log_printf (psf, " data offset : 0x%04X\n map offset : 0x%04X\n"
416 { psf_log_printf (psf, "Error : rsrc.data_offset (%d, 0x%x) > len\n", rsrc.data_offset, rsrc.data_offset) ;
422 { psf_log_printf (psf, "Error : rsrc.map_offset > len\n") ;
428 { psf_log_printf (psf, "Error : rsrc.data_length > len\n") ;
434 { psf_log_printf (psf, "Error : rsrc.map_length > len\n") ;
440 { psf_log_printf (psf, "Error : This does not look like a MacOSX resource fork.\n") ;
446 { psf_log_printf (psf, "Bad map offset (%d + 28 > %d).\n", rsrc.map_offset, rsrc.rsrc_len) ;
453 { psf_log_printf (psf, "Bad string offset (%d).\n", rsrc.string_offset) ;
461 { psf_log_printf (psf, "Bad map offset.\n") ;
467 { psf_log_printf (psf, "Bad type count.\n") ;
474 { psf_log_printf (psf, "Bad item offset (%d).\n", rsrc.item_offset) ;
482 { psf_log_printf (psf, "Bad rsrc marker.\n") ;
491 error = parse_str_rsrc (psf, &rsrc) ;
496 psf_log_printf (psf, "No 'STR ' resource.\n") ;
501 psf_use_rsrc (psf, SF_FALSE) ;
510 parse_str_rsrc (SF_PRIVATE *psf, SD2_RSRC * rsrc)
514 psf_log_printf (psf, "Finding parameters :\n") ;
517 psf_log_printf (psf, " Offset RsrcId dlen slen Value\n") ;
530 { psf_log_printf (psf, "Exiting parser on id_offset of %d.\n", id_offset) ;
537 { psf_log_printf (psf, "Exiting parser on data offset of %d.\n", data_offset) ;
543 { psf_log_printf (psf, "Exiting parser on data length of %d.\n", data_len) ;
550 psf_log_printf (psf, " 0x%04x %4d %4d %3d '%s'\n", data_offset, rsrc_id, data_len, slen, value) ;
553 { psf_log_printf (psf, "Exiting parser on Photoshop data.\n", data_offset) ;
565 psf_log_printf (psf, "Found Parameters :\n") ;
566 psf_log_printf (psf, " sample-size : %d\n", rsrc->sample_size) ;
567 psf_log_printf (psf, " sample-rate : %d\n", rsrc->sample_rate) ;
568 psf_log_printf (psf, " channels : %d\n", rsrc->channels) ;
573 psf_log_printf (psf, "Geez!! Looks like sample rate and sample size got switched.\nCorrecting this screw up.\n") ;
580 { psf_log_printf (psf, "Bad sample rate (%d)\n", rsrc->sample_rate) ;
585 { psf_log_printf (psf, "Bad channel count (%d)\n", rsrc->channels) ;
589 psf->sf.samplerate = rsrc->sample_rate ;
590 psf->sf.channels = rsrc->channels ;
591 psf->bytewidth = rsrc->sample_size ;
595 psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_S8 ;
599 psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_16 ;
603 psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_24 ;
607 psf->sf.format = SF_FORMAT_SD2 | SF_FORMAT_PCM_32 ;
611 psf_log_printf (psf, "Bad sample size (%d)\n", rsrc->sample_size) ;
615 psf_log_printf (psf, "ok\n") ;