/* return 1 on success, 0 on failure */ int play_frame(void) { unsigned char *audio; int mc; size_t bytes; debug("play_frame"); /* The first call will not decode anything but return MPG123_NEW_FORMAT! */ mc = mpg123_decode_frame(mh, &framenum, &audio, &bytes); /* Play what is there to play (starting with second decode_frame call!) */ if(bytes) { if(param.frame_number > -1) --frames_left; if(fresh && framenum >= param.start_frame) { fresh = FALSE; } /* Normal flushing of data, includes buffer decoding. */ if(flush_output(ao, audio, bytes) < (int)bytes && !intflag) { error("Deep trouble! Cannot flush to my output anymore!"); safe_exit(133); } if(param.checkrange) { long clip = mpg123_clip(mh); if(clip > 0) fprintf(stderr,"%ld samples clipped\n", clip); } } /* Special actions and errors. */ if(mc != MPG123_OK) { if(mc == MPG123_ERR || mc == MPG123_DONE) { if(mc == MPG123_ERR) error1("...in decoding next frame: %s", mpg123_strerror(mh)); return 0; } if(mc == MPG123_NO_SPACE) { error("I have not enough output space? I didn't plan for this."); return 0; } if(mc == MPG123_NEW_FORMAT) { long rate; int channels, format; mpg123_getformat(mh, &rate, &channels, &format); if(param.verbose > 2) fprintf(stderr, "\nNote: New output format %liHz %ich, format %i\n", rate, channels, format); if(!param.quiet) { fprintf(stderr, "\n"); if(param.verbose) print_header(mh); else print_header_compact(mh); } reset_audio(rate, channels, format); } } return 1; }
int Asset::init_values() { path[0] = 0; // format = FILE_MOV; // Has to be unknown for file probing to succeed format = FILE_UNKNOWN; fformat[0] = 0; bits = 0; byte_order = 0; signed_ = 0; header = 0; dither = 0; reset_audio(); reset_video(); strcpy(vcodec, QUICKTIME_YUV2); strcpy(acodec, QUICKTIME_TWOS); ff_audio_options[0] = 0; ff_video_options[0] = 0; ff_audio_bitrate = 0; ff_video_bitrate = 0; ff_video_quality = 0; jpeg_quality = 100; aspect_ratio = -1; ampeg_bitrate = 256; ampeg_derivative = 3; vorbis_vbr = 0; vorbis_min_bitrate = -1; vorbis_bitrate = 128000; vorbis_max_bitrate = -1; theora_fix_bitrate = 1; theora_bitrate = 860000; theora_quality = 16; theora_sharpness = 2; theora_keyframe_frequency = 64; theora_keyframe_force_frequency = 64; mp3_bitrate = 256000; mp4a_bitrate = 256000; mp4a_quantqual = 100; // mpeg parameters vmpeg_iframe_distance = 45; vmpeg_pframe_distance = 0; vmpeg_progressive = 0; vmpeg_denoise = 1; vmpeg_bitrate = 1000000; vmpeg_derivative = 1; vmpeg_quantization = 15; vmpeg_cmodel = BC_YUV420P; vmpeg_fix_bitrate = 0; vmpeg_seq_codes = 0; vmpeg_preset = 0; vmpeg_field_order = 0; // Divx parameters. BC_Hash from encore2 divx_bitrate = 2000000; divx_rc_period = 50; divx_rc_reaction_ratio = 45; divx_rc_reaction_period = 10; divx_max_key_interval = 250; divx_max_quantizer = 31; divx_min_quantizer = 1; divx_quantizer = 5; divx_quality = 5; divx_fix_bitrate = 1; divx_use_deblocking = 1; h264_bitrate = 2000000; h264_quantizer = 5; h264_fix_bitrate = 0; ms_bitrate = 1000000; ms_bitrate_tolerance = 500000; ms_quantization = 10; ms_interlaced = 0; ms_gop_size = 45; ms_fix_bitrate = 1; ac3_bitrate = 128; png_use_alpha = 0; exr_use_alpha = 0; exr_compression = 0; tiff_cmodel = 0; tiff_compression = 0; use_header = 1; id = EDL::next_id(); return 0; }