| @@ -57,19 +57,6 @@ uint32_t ff_square_tab[512] = { 0, }; | |||||
| #define pb_7f (~0UL / 255 * 0x7f) | #define pb_7f (~0UL / 255 * 0x7f) | ||||
| #define pb_80 (~0UL / 255 * 0x80) | #define pb_80 (~0UL / 255 * 0x80) | ||||
| /* Specific zigzag scan for 248 idct. NOTE that unlike the | |||||
| * specification, we interleave the fields */ | |||||
| const uint8_t ff_zigzag248_direct[64] = { | |||||
| 0, 8, 1, 9, 16, 24, 2, 10, | |||||
| 17, 25, 32, 40, 48, 56, 33, 41, | |||||
| 18, 26, 3, 11, 4, 12, 19, 27, | |||||
| 34, 42, 49, 57, 50, 58, 35, 43, | |||||
| 20, 28, 5, 13, 6, 14, 21, 29, | |||||
| 36, 44, 51, 59, 52, 60, 37, 45, | |||||
| 22, 30, 7, 15, 23, 31, 38, 46, | |||||
| 53, 61, 54, 62, 39, 47, 55, 63, | |||||
| }; | |||||
| const uint8_t ff_alternate_horizontal_scan[64] = { | const uint8_t ff_alternate_horizontal_scan[64] = { | ||||
| 0, 1, 2, 3, 8, 9, 16, 17, | 0, 1, 2, 3, 8, 9, 16, 17, | ||||
| 10, 11, 4, 5, 6, 7, 15, 14, | 10, 11, 4, 5, 6, 7, 15, 14, | ||||
| @@ -35,7 +35,6 @@ | |||||
| /* encoding scans */ | /* encoding scans */ | ||||
| extern const uint8_t ff_alternate_horizontal_scan[64]; | extern const uint8_t ff_alternate_horizontal_scan[64]; | ||||
| extern const uint8_t ff_alternate_vertical_scan[64]; | extern const uint8_t ff_alternate_vertical_scan[64]; | ||||
| extern const uint8_t ff_zigzag248_direct[64]; | |||||
| extern uint32_t ff_square_tab[512]; | extern uint32_t ff_square_tab[512]; | ||||
| @@ -311,7 +311,7 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx) | |||||
| /* 248DCT setup */ | /* 248DCT setup */ | ||||
| s->fdct[1] = dsp.fdct248; | s->fdct[1] = dsp.fdct248; | ||||
| s->idct_put[1] = ff_simple_idct248_put; // FIXME: need to add it to DSP | s->idct_put[1] = ff_simple_idct248_put; // FIXME: need to add it to DSP | ||||
| memcpy(s->dv_zigzag[1], ff_zigzag248_direct, 64); | |||||
| memcpy(s->dv_zigzag[1], ff_dv_zigzag248_direct, 64); | |||||
| s->avctx = avctx; | s->avctx = avctx; | ||||
| avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; | avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; | ||||
| @@ -28,6 +28,19 @@ | |||||
| #include "dvdata.h" | #include "dvdata.h" | ||||
| /* Specific zigzag scan for 248 idct. NOTE that unlike the | |||||
| * specification, we interleave the fields */ | |||||
| const uint8_t ff_dv_zigzag248_direct[64] = { | |||||
| 0, 8, 1, 9, 16, 24, 2, 10, | |||||
| 17, 25, 32, 40, 48, 56, 33, 41, | |||||
| 18, 26, 3, 11, 4, 12, 19, 27, | |||||
| 34, 42, 49, 57, 50, 58, 35, 43, | |||||
| 20, 28, 5, 13, 6, 14, 21, 29, | |||||
| 36, 44, 51, 59, 52, 60, 37, 45, | |||||
| 22, 30, 7, 15, 23, 31, 38, 46, | |||||
| 53, 61, 54, 62, 39, 47, 55, 63, | |||||
| }; | |||||
| /* unquant tables (not used directly) */ | /* unquant tables (not used directly) */ | ||||
| const uint8_t ff_dv_quant_shifts[22][4] = { | const uint8_t ff_dv_quant_shifts[22][4] = { | ||||
| { 3,3,4,4 }, | { 3,3,4,4 }, | ||||
| @@ -21,6 +21,8 @@ | |||||
| #include <stdint.h> | #include <stdint.h> | ||||
| extern const uint8_t ff_dv_zigzag248_direct[64]; | |||||
| extern const uint8_t ff_dv_quant_shifts[22][4]; | extern const uint8_t ff_dv_quant_shifts[22][4]; | ||||
| extern const uint8_t ff_dv_quant_offset[4]; | extern const uint8_t ff_dv_quant_offset[4]; | ||||
| @@ -245,7 +245,7 @@ static av_always_inline int dv_init_enc_block(EncBlockInfo* bi, uint8_t *data, i | |||||
| } | } | ||||
| bi->mb[0] = blk[0]; | bi->mb[0] = blk[0]; | ||||
| zigzag_scan = bi->dct_mode ? ff_zigzag248_direct : ff_zigzag_direct; | |||||
| zigzag_scan = bi->dct_mode ? ff_dv_zigzag248_direct : ff_zigzag_direct; | |||||
| weight = bi->dct_mode ? dv_weight_248 : dv_weight_88; | weight = bi->dct_mode ? dv_weight_248 : dv_weight_88; | ||||
| for (area = 0; area < 4; area++) { | for (area = 0; area < 4; area++) { | ||||