You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	AMV audio decoder
Originally committed as revision 10598 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -263,6 +263,7 @@ OBJS-$(CONFIG_ADPCM_EA_DECODER)        += adpcm.o | ||||
| OBJS-$(CONFIG_ADPCM_EA_ENCODER)        += adpcm.o | ||||
| OBJS-$(CONFIG_ADPCM_G726_DECODER)      += g726.o | ||||
| OBJS-$(CONFIG_ADPCM_G726_ENCODER)      += g726.o | ||||
| OBJS-$(CONFIG_ADPCM_IMA_AMV_DECODER)   += adpcm.o | ||||
| OBJS-$(CONFIG_ADPCM_IMA_DK3_DECODER)   += adpcm.o | ||||
| OBJS-$(CONFIG_ADPCM_IMA_DK3_ENCODER)   += adpcm.o | ||||
| OBJS-$(CONFIG_ADPCM_IMA_DK4_DECODER)   += adpcm.o | ||||
|   | ||||
| @@ -1182,16 +1182,28 @@ static int adpcm_decode_frame(AVCodecContext *avctx, | ||||
|             } | ||||
|         } | ||||
|         break; | ||||
|     case CODEC_ID_ADPCM_IMA_AMV: | ||||
|     case CODEC_ID_ADPCM_IMA_SMJPEG: | ||||
|         c->status[0].predictor = *src; | ||||
|         src += 2; | ||||
|         c->status[0].step_index = *src++; | ||||
|         src++;  /* skip another byte before getting to the meat */ | ||||
|  | ||||
|         if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV) | ||||
|             src+=4; | ||||
|  | ||||
|         while (src < buf + buf_size) { | ||||
|             char hi, lo; | ||||
|             lo = *src & 0x0F; | ||||
|             hi = (*src >> 4) & 0x0F; | ||||
|  | ||||
|             if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV) | ||||
|                 FFSWAP(char, hi, lo); | ||||
|  | ||||
|             *samples++ = adpcm_ima_expand_nibble(&c->status[0], | ||||
|                 *src & 0x0F, 3); | ||||
|                 lo, 3); | ||||
|             *samples++ = adpcm_ima_expand_nibble(&c->status[0], | ||||
|                 (*src >> 4) & 0x0F, 3); | ||||
|                 hi, 3); | ||||
|             src++; | ||||
|         } | ||||
|         break; | ||||
| @@ -1439,6 +1451,7 @@ ADPCM_ENCODER(id,name) ADPCM_DECODER(id,name) | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_4XM, adpcm_4xm); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_IMA_AMV, adpcm_ima_amv); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_IMA_DK3, adpcm_ima_dk3); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_IMA_DK4, adpcm_ima_dk4); | ||||
| ADPCM_CODEC(CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt); | ||||
|   | ||||
| @@ -246,6 +246,7 @@ void avcodec_register_all(void) | ||||
|     REGISTER_ENCDEC  (ADPCM_CT, adpcm_ct); | ||||
|     REGISTER_ENCDEC  (ADPCM_EA, adpcm_ea); | ||||
|     REGISTER_ENCDEC  (ADPCM_G726, adpcm_g726); | ||||
|     REGISTER_DECODER (ADPCM_IMA_AMV, adpcm_ima_amv); | ||||
|     REGISTER_ENCDEC  (ADPCM_IMA_DK3, adpcm_ima_dk3); | ||||
|     REGISTER_ENCDEC  (ADPCM_IMA_DK4, adpcm_ima_dk4); | ||||
|     REGISTER_ENCDEC  (ADPCM_IMA_QT, adpcm_ima_qt); | ||||
|   | ||||
| @@ -208,6 +208,7 @@ enum CodecID { | ||||
|     CODEC_ID_ADPCM_SBPRO_3, | ||||
|     CODEC_ID_ADPCM_SBPRO_2, | ||||
|     CODEC_ID_ADPCM_THP, | ||||
|     CODEC_ID_ADPCM_IMA_AMV, | ||||
|  | ||||
|     /* AMR */ | ||||
|     CODEC_ID_AMR_NB= 0x12000, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user