|  | @@ -51,6 +51,7 @@ typedef struct { | 
														
													
														
															
																|  |  | int lastframelen, bands; |  |  | int lastframelen, bands; | 
														
													
														
															
																|  |  | int oldDSCF[2][BANDS]; |  |  | int oldDSCF[2][BANDS]; | 
														
													
														
															
																|  |  | int rnd; |  |  | int rnd; | 
														
													
														
															
																|  |  |  |  |  | int frames_to_skip; | 
														
													
														
															
																|  |  | /* for synthesis */ |  |  | /* for synthesis */ | 
														
													
														
															
																|  |  | DECLARE_ALIGNED_16(MPA_INT, synth_buf[MPA_MAX_CHANNELS][512*2]); |  |  | DECLARE_ALIGNED_16(MPA_INT, synth_buf[MPA_MAX_CHANNELS][512*2]); | 
														
													
														
															
																|  |  | int synth_buf_offset[MPA_MAX_CHANNELS]; |  |  | int synth_buf_offset[MPA_MAX_CHANNELS]; | 
														
													
												
													
														
															
																|  | @@ -98,6 +99,7 @@ static int mpc7_decode_init(AVCodecContext * avctx) | 
														
													
														
															
																|  |  | c->lastframelen = get_bits(&gb, 11); |  |  | c->lastframelen = get_bits(&gb, 11); | 
														
													
														
															
																|  |  | av_log(avctx, AV_LOG_DEBUG, "IS: %d, MSS: %d, TG: %d, LFL: %d, bands: %d\n", |  |  | av_log(avctx, AV_LOG_DEBUG, "IS: %d, MSS: %d, TG: %d, LFL: %d, bands: %d\n", | 
														
													
														
															
																|  |  | c->IS, c->MSS, c->gapless, c->lastframelen, c->bands); |  |  | c->IS, c->MSS, c->gapless, c->lastframelen, c->bands); | 
														
													
														
															
																|  |  |  |  |  | c->frames_to_skip = 0; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if(vlc_inited) return 0; |  |  | if(vlc_inited) return 0; | 
														
													
														
															
																|  |  | av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n"); |  |  | av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n"); | 
														
													
												
													
														
															
																|  | @@ -328,11 +330,23 @@ static int mpc7_decode_frame(AVCodecContext * avctx, | 
														
													
														
															
																|  |  | av_log(NULL,0, "Error decoding frame: used %i of %i bits\n", bits_used, bits_avail); |  |  | av_log(NULL,0, "Error decoding frame: used %i of %i bits\n", bits_used, bits_avail); | 
														
													
														
															
																|  |  | return -1; |  |  | return -1; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  |  |  |  | if(c->frames_to_skip){ | 
														
													
														
															
																|  |  |  |  |  | c->frames_to_skip--; | 
														
													
														
															
																|  |  |  |  |  | *data_size = 0; | 
														
													
														
															
																|  |  |  |  |  | return buf_size; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  | *data_size = (buf[1] ? c->lastframelen : MPC_FRAME_SIZE) * 4; |  |  | *data_size = (buf[1] ? c->lastframelen : MPC_FRAME_SIZE) * 4; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | return buf_size; |  |  | return buf_size; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | static void mpc7_decode_flush(AVCodecContext *avctx) | 
														
													
														
															
																|  |  |  |  |  | { | 
														
													
														
															
																|  |  |  |  |  | MPCContext *c = avctx->priv_data; | 
														
													
														
															
																|  |  |  |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); | 
														
													
														
															
																|  |  |  |  |  | c->frames_to_skip = 32; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | AVCodec mpc7_decoder = { |  |  | AVCodec mpc7_decoder = { | 
														
													
														
															
																|  |  | "mpc sv7", |  |  | "mpc sv7", | 
														
													
												
													
														
															
																|  | @@ -343,4 +357,5 @@ AVCodec mpc7_decoder = { | 
														
													
														
															
																|  |  | NULL, |  |  | NULL, | 
														
													
														
															
																|  |  | NULL, |  |  | NULL, | 
														
													
														
															
																|  |  | mpc7_decode_frame, |  |  | mpc7_decode_frame, | 
														
													
														
															
																|  |  |  |  |  | .flush = mpc7_decode_flush, | 
														
													
														
															
																|  |  | }; |  |  | }; |