Originally committed as revision 15518 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -894,7 +894,7 @@ motion estimation completely (you have only I-frames, which means it | |||
| is about as good as JPEG compression). | |||
| @item To have very low audio bitrates, reduce the sampling frequency | |||
| (down to 22050 kHz for MPEG audio, 22050 or 11025 for AC3). | |||
| (down to 22050kHz for MPEG audio, 22050 or 11025 for AC-3). | |||
| @item To have a constant quality (but a variable bitrate), use the option | |||
| '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst | |||
| @@ -284,7 +284,7 @@ static inline int put_bits_left(PutBitContext* s) | |||
| return (s->buf_end - s->buf) * 8 - put_bits_count(s); | |||
| } | |||
| /* decode ac coefs */ | |||
| /* decode ac coefficients */ | |||
| static void dv_decode_ac(GetBitContext *gb, BlockInfo *mb, DCTELEM *block) | |||
| { | |||
| int last_index = gb->size_in_bits; | |||
| @@ -493,7 +493,7 @@ static inline void dv_decode_video_segment(DVVideoContext *s, | |||
| mb_y = v >> 8; | |||
| /* We work with 720p frames split in half. The odd half-frame (chan==2,3) is displaced :-( */ | |||
| if (s->sys->height == 720 && ((s->buf[1]>>2)&0x3) == 0) { | |||
| mb_y -= (mb_y>17)?18:-72; /* shifting the Y coordinate down by 72/2 macro blocks */ | |||
| mb_y -= (mb_y>17)?18:-72; /* shifting the Y coordinate down by 72/2 macroblocks */ | |||
| } | |||
| /* idct_put'ting luminance */ | |||
| @@ -663,7 +663,7 @@ static av_always_inline void dv_set_class_number(DCTELEM* blk, EncBlockInfo* bi, | |||
| method suggested in SMPTE 314M Table 22, and an improved | |||
| method. The SMPTE method is very conservative; it assigns class | |||
| 3 (i.e. severe quantization) to any block where the largest AC | |||
| component is greater than 36. ffmpeg's DV encoder tracks AC bit | |||
| component is greater than 36. FFmpeg's DV encoder tracks AC bit | |||
| consumption precisely, so there is no need to bias most blocks | |||
| towards strongly lossy compression. Instead, we assign class 2 | |||
| to most blocks, and use class 3 only when strictly necessary | |||
| @@ -671,7 +671,7 @@ static av_always_inline void dv_set_class_number(DCTELEM* blk, EncBlockInfo* bi, | |||
| #if 0 /* SMPTE spec method */ | |||
| static const int classes[] = {12, 24, 36, 0xffff}; | |||
| #else /* improved ffmpeg method */ | |||
| #else /* improved FFmpeg method */ | |||
| static const int classes[] = {-1, -1, 255, 0xffff}; | |||
| #endif | |||
| int max=classes[0]; | |||
| @@ -1176,7 +1176,7 @@ static void dv_format_frame(DVVideoContext* c, uint8_t* buf) | |||
| buf += 77; /* audio control & shuffled PCM audio */ | |||
| } | |||
| buf += dv_write_dif_id(dv_sect_video, chan, i, j, buf); | |||
| buf += 77; /* 1 video macro block: 1 bytes control | |||
| buf += 77; /* 1 video macroblock: 1 bytes control | |||
| 4 * 14 bytes Y 8x8 data | |||
| 10 bytes Cr 8x8 data | |||
| 10 bytes Cb 8x8 data */ | |||
| @@ -48,13 +48,13 @@ typedef struct DVprofile { | |||
| int height; /* picture height in pixels */ | |||
| int width; /* picture width in pixels */ | |||
| AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ | |||
| const uint16_t *video_place; /* positions of all DV macro blocks */ | |||
| const uint16_t *video_place; /* positions of all DV macroblocks */ | |||
| enum PixelFormat pix_fmt; /* picture pixel format */ | |||
| int bpm; /* blocks per macroblock */ | |||
| const uint8_t *block_sizes; /* AC block sizes, in bits */ | |||
| int audio_stride; /* size of audio_shuffle table */ | |||
| int audio_min_samples[3];/* min ammount of audio samples */ | |||
| /* for 48Khz, 44.1Khz and 32Khz */ | |||
| int audio_min_samples[3];/* min amount of audio samples */ | |||
| /* for 48kHz, 44.1kHz and 32kHz */ | |||
| int audio_samples_dist[5];/* how many samples are supposed to be */ | |||
| /* in each frame in a 5 frames window */ | |||
| const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */ | |||
| @@ -323,7 +323,7 @@ static const uint8_t dv100_qstep[16] = { | |||
| 2, 3, 4, 5, 6, 7, 8, 16, 18, 20, 22, 24, 28, 52 | |||
| }; | |||
| /* NOTE: I prefer hardcoding the positioning of dv blocks, it is | |||
| /* NOTE: I prefer hardcoding the positioning of DV blocks, it is | |||
| simpler :-) */ | |||
| static const uint16_t dv_place_420[1620] = { | |||
| @@ -6175,7 +6175,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 6, | |||
| .block_sizes = block_sizes_dv2550, | |||
| .audio_stride = 90, | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ | |||
| .audio_shuffle = dv_audio_shuffle525, | |||
| }, | |||
| @@ -6195,7 +6195,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 6, | |||
| .block_sizes = block_sizes_dv2550, | |||
| .audio_stride = 108, | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, | |||
| .audio_shuffle = dv_audio_shuffle625, | |||
| }, | |||
| @@ -6215,7 +6215,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 6, | |||
| .block_sizes = block_sizes_dv2550, | |||
| .audio_stride = 108, | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, | |||
| .audio_shuffle = dv_audio_shuffle625, | |||
| }, | |||
| @@ -6235,7 +6235,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 6, | |||
| .block_sizes = block_sizes_dv2550, | |||
| .audio_stride = 90, | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ | |||
| .audio_shuffle = dv_audio_shuffle525, | |||
| }, | |||
| @@ -6255,7 +6255,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 6, | |||
| .block_sizes = block_sizes_dv2550, | |||
| .audio_stride = 108, | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, | |||
| .audio_shuffle = dv_audio_shuffle625, | |||
| }, | |||
| @@ -6275,7 +6275,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 8, | |||
| .block_sizes = block_sizes_dv100, | |||
| .audio_stride = 90, | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ | |||
| .audio_shuffle = dv_audio_shuffle525, | |||
| }, | |||
| @@ -6295,7 +6295,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 8, | |||
| .block_sizes = block_sizes_dv100, | |||
| .audio_stride = 108, | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 }, | |||
| .audio_shuffle = dv_audio_shuffle625, | |||
| }, | |||
| @@ -6315,7 +6315,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 8, | |||
| .block_sizes = block_sizes_dv100, | |||
| .audio_stride = 90, | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ | |||
| .audio_shuffle = dv_audio_shuffle525, | |||
| }, | |||
| @@ -6335,7 +6335,7 @@ static const DVprofile dv_profiles[] = { | |||
| .bpm = 8, | |||
| .block_sizes = block_sizes_dv100, | |||
| .audio_stride = 90, | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */ | |||
| .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32kHz */ | |||
| .audio_samples_dist = { 1600, 1602, 1602, 1602, 1602 }, /* per SMPTE-314M */ | |||
| .audio_shuffle = dv_audio_shuffle525, | |||
| } | |||
| @@ -33,7 +33,7 @@ VLC ff_msmp4_mb_i_vlc; | |||
| VLC ff_msmp4_dc_luma_vlc[2]; | |||
| VLC ff_msmp4_dc_chroma_vlc[2]; | |||
| /* intra picture macro block coded block pattern */ | |||
| /* intra picture macroblock coded block pattern */ | |||
| const uint16_t ff_msmp4_mb_i_table[64][2] = { | |||
| { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 }, | |||
| { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 }, | |||
| @@ -53,7 +53,7 @@ const uint16_t ff_msmp4_mb_i_table[64][2] = { | |||
| { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 }, | |||
| }; | |||
| /* non intra picture macro block coded block pattern + mb type */ | |||
| /* non intra picture macroblock coded block pattern + mb type */ | |||
| const uint32_t table_mb_non_intra[128][2] = { | |||
| { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 }, | |||
| { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 }, | |||
| @@ -304,7 +304,7 @@ static const int8_t table0_run[132] = { | |||
| 23, 24, 25, 26, | |||
| }; | |||
| /* vlc table 1, for intra chroma and P macro blocks */ | |||
| /* vlc table 1, for intra chroma and P macroblocks */ | |||
| static const uint16_t table1_vlc[149][2] = { | |||
| { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 }, | |||
| @@ -49,7 +49,7 @@ extern VLC ff_msmp4_mb_i_vlc; | |||
| extern VLC ff_msmp4_dc_luma_vlc[2]; | |||
| extern VLC ff_msmp4_dc_chroma_vlc[2]; | |||
| /* intra picture macro block coded block pattern */ | |||
| /* intra picture macroblock coded block pattern */ | |||
| extern const uint16_t ff_msmp4_mb_i_table[64][2]; | |||
| extern const uint8_t cbpy_tab[16][2]; | |||
| @@ -250,7 +250,7 @@ void rv10_encode_picture_header(MpegEncContext *s, int picture_number) | |||
| /* specific MPEG like DC coding not used */ | |||
| } | |||
| /* if multiple packets per frame are sent, the position at which | |||
| to display the macro blocks is coded here */ | |||
| to display the macroblocks is coded here */ | |||
| if(!full_frame){ | |||
| put_bits(&s->pb, 6, 0); /* mb_x */ | |||
| put_bits(&s->pb, 6, 0); /* mb_y */ | |||
| @@ -352,7 +352,7 @@ static int rv10_decode_picture_header(MpegEncContext *s) | |||
| } | |||
| } | |||
| /* if multiple packets per frame are sent, the position at which | |||
| to display the macro blocks is coded here */ | |||
| to display the macroblocks is coded here */ | |||
| mb_xy= s->mb_x + s->mb_y*s->mb_width; | |||
| if(show_bits(&s->gb, 12)==0 || (mb_xy && mb_xy < s->mb_num)){ | |||
| @@ -112,7 +112,7 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4], | |||
| return 0; | |||
| smpls = as_pack[1] & 0x3f; /* samples in this frame - min. samples */ | |||
| freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48KHz, 1 - 44,1kHz, 2 - 32 kHz */ | |||
| freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48kHz, 1 - 44,1kHz, 2 - 32kHz */ | |||
| quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */ | |||
| if (quant > 1) | |||
| @@ -145,8 +145,8 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4], | |||
| if (of*2 >= size) | |||
| continue; | |||
| pcm[of*2] = frame[d+1]; // FIXME: may be we have to admit | |||
| pcm[of*2+1] = frame[d]; // that DV is a big endian PCM | |||
| pcm[of*2] = frame[d+1]; // FIXME: maybe we have to admit | |||
| pcm[of*2+1] = frame[d]; // that DV is a big-endian PCM | |||
| if (pcm[of*2+1] == 0x80 && pcm[of*2] == 0x00) | |||
| pcm[of*2+1] = 0; | |||
| } else { /* 12bit quantization */ | |||
| @@ -161,12 +161,12 @@ static int dv_extract_audio(uint8_t* frame, uint8_t* ppcm[4], | |||
| if (of*2 >= size) | |||
| continue; | |||
| pcm[of*2] = lc & 0xff; // FIXME: may be we have to admit | |||
| pcm[of*2+1] = lc >> 8; // that DV is a big endian PCM | |||
| pcm[of*2] = lc & 0xff; // FIXME: maybe we have to admit | |||
| pcm[of*2+1] = lc >> 8; // that DV is a big-endian PCM | |||
| of = sys->audio_shuffle[i%half_ch+half_ch][j] + | |||
| (d - 8)/3 * sys->audio_stride; | |||
| pcm[of*2] = rc & 0xff; // FIXME: may be we have to admit | |||
| pcm[of*2+1] = rc >> 8; // that DV is a big endian PCM | |||
| pcm[of*2] = rc & 0xff; // FIXME: maybe we have to admit | |||
| pcm[of*2+1] = rc >> 8; // that DV is a big-endian PCM | |||
| ++d; | |||
| } | |||
| } | |||
| @@ -196,7 +196,7 @@ static int dv_extract_audio_info(DVDemuxContext* c, uint8_t* frame) | |||
| } | |||
| smpls = as_pack[1] & 0x3f; /* samples in this frame - min. samples */ | |||
| freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48KHz, 1 - 44,1kHz, 2 - 32 kHz */ | |||
| freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48kHz, 1 - 44,1kHz, 2 - 32kHz */ | |||
| stype = (as_pack[3] & 0x1f); /* 0 - 2CH, 2 - 4CH, 3 - 8CH */ | |||
| quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */ | |||
| @@ -38,7 +38,7 @@ struct DVMuxContext { | |||
| const DVprofile* sys; /* Current DV profile. E.g.: 525/60, 625/50 */ | |||
| int n_ast; /* Number of stereo audio streams (up to 2) */ | |||
| AVStream *ast[2]; /* Stereo audio streams */ | |||
| AVFifoBuffer audio_data[2]; /* Fifo for storing excessive amounts of PCM */ | |||
| AVFifoBuffer audio_data[2]; /* FIFO for storing excessive amounts of PCM */ | |||
| int frames; /* Number of a current frame */ | |||
| time_t start_time; /* Start time of recording */ | |||
| int has_audio; /* frame under contruction has audio */ | |||
| @@ -117,7 +117,7 @@ static int dv_write_pack(enum dv_pack_type pack_id, DVMuxContext *c, uint8_t* bu | |||
| (c->sys->n_difchan & 2); /* definition: 0 -- 25Mbps, 2 -- 50Mbps */ | |||
| buf[4] = (1 << 7) | /* emphasis: 1 -- off */ | |||
| (0 << 6) | /* emphasis time constant: 0 -- reserved */ | |||
| (0 << 3) | /* frequency: 0 -- 48Khz, 1 -- 44,1Khz, 2 -- 32Khz */ | |||
| (0 << 3) | /* frequency: 0 -- 48kHz, 1 -- 44,1kHz, 2 -- 32kHz */ | |||
| 0; /* quantization: 0 -- 16bit linear, 1 -- 12bit nonlinear */ | |||
| va_end(ap); | |||
| break; | |||
| @@ -189,8 +189,8 @@ static void dv_inject_audio(DVMuxContext *c, int channel, uint8_t* frame_ptr) | |||
| if (of*2 >= size) | |||
| continue; | |||
| frame_ptr[d] = av_fifo_peek(&c->audio_data[channel], of*2+1); // FIXME: may be we have to admit | |||
| frame_ptr[d+1] = av_fifo_peek(&c->audio_data[channel], of*2); // that DV is a big endian PCM | |||
| frame_ptr[d] = av_fifo_peek(&c->audio_data[channel], of*2+1); // FIXME: maybe we have to admit | |||
| frame_ptr[d+1] = av_fifo_peek(&c->audio_data[channel], of*2); // that DV is a big-endian PCM | |||
| } | |||
| frame_ptr += 16 * 80; /* 15 Video DIFs + 1 Audio DIF */ | |||
| } | |||
| @@ -365,7 +365,7 @@ static int dv_write_header(AVFormatContext *s) | |||
| if (!dv_init_mux(s)) { | |||
| av_log(s, AV_LOG_ERROR, "Can't initialize DV format!\n" | |||
| "Make sure that you supply exactly two streams:\n" | |||
| " video: 25fps or 29.97fps, audio: 2ch/48Khz/PCM\n" | |||
| " video: 25fps or 29.97fps, audio: 2ch/48kHz/PCM\n" | |||
| " (50Mbps allows an optional second audio stream)\n"); | |||
| return -1; | |||
| } | |||
| @@ -1201,7 +1201,7 @@ static int mpegts_probe(AVProbeData *p) | |||
| #endif | |||
| } | |||
| /* return the 90 kHz PCR and the extension for the 27 MHz PCR. return | |||
| /* return the 90kHz PCR and the extension for the 27MHz PCR. return | |||
| (-1) if not available */ | |||
| static int parse_pcr(int64_t *ppcr_high, int *ppcr_low, | |||
| const uint8_t *packet) | |||
| @@ -104,7 +104,7 @@ void ff_rtp_send_mpegvideo(AVFormatContext *s1, const uint8_t *buf1, int size) | |||
| memcpy(q, buf1, len); | |||
| q += len; | |||
| /* 90 KHz time stamp */ | |||
| /* 90kHz time stamp */ | |||
| s->timestamp = s->cur_timestamp; | |||
| ff_rtp_send_data(s1, s->buf, q - s->buf, (len == size)); | |||