Commit 96b06945 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'ee0ebd3c'

* commit 'ee0ebd3c':
  dv: K&R formatting cosmetics

Conflicts:
	libavcodec/dv.c
	libavcodec/dv.h
	libavcodec/dv_profile.c
	libavcodec/dvdec.c
	libavcodec/dvenc.c
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 5309e7e6 ee0ebd3c
......@@ -40,124 +40,131 @@
#include "libavutil/internal.h"
#include "libavutil/pixdesc.h"
#include "avcodec.h"
#include "dv.h"
#include "dvdata.h"
#include "get_bits.h"
#include "internal.h"
#include "put_bits.h"
#include "simple_idct.h"
#include "dvdata.h"
#include "dv.h"
/* XXX: also include quantization */
RL_VLC_ELEM ff_dv_rl_vlc[1184];
static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan, int seq, int slot,
uint16_t *tbl)
static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan,
int seq, int slot, uint16_t *tbl)
{
static const uint8_t off[] = { 2, 6, 8, 0, 4 };
static const uint8_t shuf1[] = { 36, 18, 54, 0, 72 };
static const uint8_t shuf2[] = { 24, 12, 36, 0, 48 };
static const uint8_t shuf3[] = { 18, 9, 27, 0, 36 };
static const uint8_t l_start[] = {0, 4, 9, 13, 18, 22, 27, 31, 36, 40};
static const uint8_t l_start[] = { 0, 4, 9, 13, 18, 22, 27, 31, 36, 40 };
static const uint8_t l_start_shuffled[] = { 9, 4, 13, 0, 18 };
static const uint8_t serpent1[] = {0, 1, 2, 2, 1, 0,
static const uint8_t serpent1[] = {
0, 1, 2, 2, 1, 0,
0, 1, 2, 2, 1, 0,
0, 1, 2, 2, 1, 0,
0, 1, 2, 2, 1, 0,
0, 1, 2};
static const uint8_t serpent2[] = {0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0,
0, 1, 2
};
static const uint8_t serpent2[] = {
0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0,
0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0,
0, 1, 2, 3, 4, 5};
static const uint8_t remap[][2] = {{ 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, /* dummy */
{ 0, 0}, { 0, 1}, { 0, 2}, { 0, 3}, {10, 0},
{10, 1}, {10, 2}, {10, 3}, {20, 0}, {20, 1},
{20, 2}, {20, 3}, {30, 0}, {30, 1}, {30, 2},
{30, 3}, {40, 0}, {40, 1}, {40, 2}, {40, 3},
{50, 0}, {50, 1}, {50, 2}, {50, 3}, {60, 0},
{60, 1}, {60, 2}, {60, 3}, {70, 0}, {70, 1},
{70, 2}, {70, 3}, { 0,64}, { 0,65}, { 0,66},
{10,64}, {10,65}, {10,66}, {20,64}, {20,65},
{20,66}, {30,64}, {30,65}, {30,66}, {40,64},
{40,65}, {40,66}, {50,64}, {50,65}, {50,66},
{60,64}, {60,65}, {60,66}, {70,64}, {70,65},
{70,66}, { 0,67}, {20,67}, {40,67}, {60,67}};
0, 1, 2, 3, 4, 5
};
static const uint8_t remap[][2] = {
{ 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, /* dummy */
{ 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 }, { 10, 0 },
{ 10, 1 }, { 10, 2 }, { 10, 3 }, { 20, 0 }, { 20, 1 },
{ 20, 2 }, { 20, 3 }, { 30, 0 }, { 30, 1 }, { 30, 2 },
{ 30, 3 }, { 40, 0 }, { 40, 1 }, { 40, 2 }, { 40, 3 },
{ 50, 0 }, { 50, 1 }, { 50, 2 }, { 50, 3 }, { 60, 0 },
{ 60, 1 }, { 60, 2 }, { 60, 3 }, { 70, 0 }, { 70, 1 },
{ 70, 2 }, { 70, 3 }, { 0, 64 }, { 0, 65 }, { 0, 66 },
{ 10, 64 }, { 10, 65 }, { 10, 66 }, { 20, 64 }, { 20, 65 },
{ 20, 66 }, { 30, 64 }, { 30, 65 }, { 30, 66 }, { 40, 64 },
{ 40, 65 }, { 40, 66 }, { 50, 64 }, { 50, 65 }, { 50, 66 },
{ 60, 64 }, { 60, 65 }, { 60, 66 }, { 70, 64 }, { 70, 65 },
{ 70, 66 }, { 0, 67 }, { 20, 67 }, { 40, 67 }, { 60, 67 }
};
int i, k, m;
int x, y, blk;
for (m=0; m<5; m++) {
for (m = 0; m < 5; m++) {
switch (d->width) {
case 1440:
blk = (chan*11+seq)*27+slot;
blk = (chan * 11 + seq) * 27 + slot;
if (chan == 0 && seq == 11) {
x = m*27+slot;
if (x<90) {
x = m * 27 + slot;
if (x < 90) {
y = 0;
} else {
x = (x - 90)*2;
x = (x - 90) * 2;
y = 67;
}
} else {
i = (4*chan + blk + off[m])%11;
k = (blk/11)%27;
i = (4 * chan + blk + off[m]) % 11;
k = (blk / 11) % 27;
x = shuf1[m] + (chan&1)*9 + k%9;
y = (i*3+k/9)*2 + (chan>>1) + 1;
x = shuf1[m] + (chan & 1) * 9 + k % 9;
y = (i * 3 + k / 9) * 2 + (chan >> 1) + 1;
}
tbl[m] = (x<<1)|(y<<9);
tbl[m] = (x << 1) | (y << 9);
break;
case 1280:
blk = (chan*10+seq)*27+slot;
blk = (chan * 10 + seq) * 27 + slot;
i = (4*chan + (seq/5) + 2*blk + off[m])%10;
k = (blk/5)%27;
i = (4 * chan + (seq / 5) + 2 * blk + off[m]) % 10;
k = (blk / 5) % 27;
x = shuf1[m]+(chan&1)*9 + k%9;
y = (i*3+k/9)*2 + (chan>>1) + 4;
x = shuf1[m] + (chan & 1) * 9 + k % 9;
y = (i * 3 + k / 9) * 2 + (chan >> 1) + 4;
if (x >= 80) {
x = remap[y][0]+((x-80)<<(y>59));
x = remap[y][0] + ((x - 80) << (y > 59));
y = remap[y][1];
}
tbl[m] = (x<<1)|(y<<9);
tbl[m] = (x << 1) | (y << 9);
break;
case 960:
blk = (chan*10+seq)*27+slot;
blk = (chan * 10 + seq) * 27 + slot;
i = (4*chan + (seq/5) + 2*blk + off[m])%10;
k = (blk/5)%27 + (i&1)*3;
i = (4 * chan + (seq / 5) + 2 * blk + off[m]) % 10;
k = (blk / 5) % 27 + (i & 1) * 3;
x = shuf2[m] + k%6 + 6*(chan&1);
y = l_start[i] + k/6 + 45*(chan>>1);
tbl[m] = (x<<1)|(y<<9);
x = shuf2[m] + k % 6 + 6 * (chan & 1);
y = l_start[i] + k / 6 + 45 * (chan >> 1);
tbl[m] = (x << 1) | (y << 9);
break;
case 720:
switch (d->pix_fmt) {
case AV_PIX_FMT_YUV422P:
x = shuf3[m] + slot/3;
x = shuf3[m] + slot / 3;
y = serpent1[slot] +
((((seq + off[m]) % d->difseg_size)<<1) + chan)*3;
tbl[m] = (x<<1)|(y<<8);
((((seq + off[m]) % d->difseg_size) << 1) + chan) * 3;
tbl[m] = (x << 1) | (y << 8);
break;
case AV_PIX_FMT_YUV420P:
x = shuf3[m] + slot/3;
x = shuf3[m] + slot / 3;
y = serpent1[slot] +
((seq + off[m]) % d->difseg_size)*3;
tbl[m] = (x<<1)|(y<<9);
((seq + off[m]) % d->difseg_size) * 3;
tbl[m] = (x << 1) | (y << 9);
break;
case AV_PIX_FMT_YUV411P:
i = (seq + off[m]) % d->difseg_size;
k = slot + ((m==1||m==2)?3:0);
k = slot + ((m == 1 || m == 2) ? 3 : 0);
x = l_start_shuffled[m] + k/6;
y = serpent2[k] + i*6;
if (x>21)
y = y*2 - i*6;
tbl[m] = (x<<2)|(y<<8);
x = l_start_shuffled[m] + k / 6;
y = serpent2[k] + i * 6;
if (x > 21)
y = y * 2 - i * 6;
tbl[m] = (x << 2) | (y << 8);
break;
}
default:
......@@ -177,7 +184,7 @@ static const uint8_t dv_quant_areas[4] = { 6, 21, 43, 64 };
int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d)
{
int j,i,c,s,p;
int j, i, c, s, p;
uint32_t *factor1, *factor2;
const int *iweight1, *iweight2;
......@@ -240,10 +247,10 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx)
if (!done) {
VLC dv_vlc;
uint16_t new_dv_vlc_bits[NB_DV_VLC*2];
uint8_t new_dv_vlc_len[NB_DV_VLC*2];
uint8_t new_dv_vlc_run[NB_DV_VLC*2];
int16_t new_dv_vlc_level[NB_DV_VLC*2];
uint16_t new_dv_vlc_bits[NB_DV_VLC * 2];
uint8_t new_dv_vlc_len[NB_DV_VLC * 2];
uint8_t new_dv_vlc_run[NB_DV_VLC * 2];
int16_t new_dv_vlc_level[NB_DV_VLC * 2];
done = 1;
......@@ -267,21 +274,21 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx)
}
/* NOTE: as a trick, we use the fact the no codes are unused
to accelerate the parsing of partial codes */
init_vlc(&dv_vlc, TEX_VLC_BITS, j,
new_dv_vlc_len, 1, 1, new_dv_vlc_bits, 2, 2, 0);
* to accelerate the parsing of partial codes */
init_vlc(&dv_vlc, TEX_VLC_BITS, j, new_dv_vlc_len,
1, 1, new_dv_vlc_bits, 2, 2, 0);
av_assert1(dv_vlc.table_size == 1184);
for (i = 0; i < dv_vlc.table_size; i++){
for (i = 0; i < dv_vlc.table_size; i++) {
int code = dv_vlc.table[i][0];
int len = dv_vlc.table[i][1];
int level, run;
if (len < 0){ //more bits needed
if (len < 0) { // more bits needed
run = 0;
level = code;
} else {
run = new_dv_vlc_run [code] + 1;
run = new_dv_vlc_run[code] + 1;
level = new_dv_vlc_level[code];
}
ff_dv_rl_vlc[i].len = len;
......
......@@ -28,9 +28,9 @@
#define AVCODEC_DV_H
#include "avcodec.h"
#include "me_cmp.h"
#include "get_bits.h"
#include "dv_profile.h"
#include "get_bits.h"
#include "me_cmp.h"
typedef struct DVwork_chunk {
uint16_t buf_offset;
......@@ -80,7 +80,6 @@ enum dv_pack_type {
#define DV_PROFILE_IS_1080i50(p) (((p)->video_stype == 0x14) && ((p)->dsf == 1))
#define DV_PROFILE_IS_720p50(p) (((p)->video_stype == 0x18) && ((p)->dsf == 1))
/**
* largest possible DV frame, in bytes (1080i50)
*/
......@@ -100,23 +99,26 @@ int ff_dvvideo_init(AVCodecContext *avctx);
static inline int dv_work_pool_size(const AVDVProfile *d)
{
int size = d->n_difchan*d->difseg_size*27;
int size = d->n_difchan * d->difseg_size * 27;
if (DV_PROFILE_IS_1080i50(d))
size -= 3*27;
size -= 3 * 27;
if (DV_PROFILE_IS_720p50(d))
size -= 4*27;
size -= 4 * 27;
return size;
}
static inline void dv_calculate_mb_xy(DVVideoContext *s, DVwork_chunk *work_chunk, int m, int *mb_x, int *mb_y)
static inline void dv_calculate_mb_xy(DVVideoContext *s,
DVwork_chunk *work_chunk,
int m, int *mb_x, int *mb_y)
{
*mb_x = work_chunk->mb_coordinates[m] & 0xff;
*mb_y = work_chunk->mb_coordinates[m] >> 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]&0x0C)) {
*mb_y -= (*mb_y>17)?18:-72; /* shifting the Y coordinate down by 72/2 macro blocks */
}
/* 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] & 0x0C))
/* shifting the Y coordinate down by 72/2 macro blocks */
*mb_y -= (*mb_y > 17) ? 18 : -72;
}
#endif /* AVCODEC_DV_H */
This diff is collapsed.
......@@ -26,8 +26,9 @@
#include "avcodec.h"
/* minimum number of bytes to read from a DV stream in order to
determine the profile */
#define DV_PROFILE_BYTES (6*80) /* 6 DIF blocks */
* determine the profile */
#define DV_PROFILE_BYTES (6 * 80) /* 6 DIF blocks */
/*
* AVDVProfile is used to express the differences between various
......
......@@ -33,7 +33,7 @@
#define DV_VLC_MAP_LEV_SIZE 23
#else
#define DV_VLC_MAP_RUN_SIZE 64
#define DV_VLC_MAP_LEV_SIZE 512 //FIXME sign was removed so this should be /2 but needs check
#define DV_VLC_MAP_LEV_SIZE 512 // FIXME sign was removed so this should be /2 but needs check
#endif
/* VLC encoding lookup table */
......@@ -72,23 +72,23 @@ static av_cold void dv_vlc_map_tableinit(void)
for (j = 1; j < DV_VLC_MAP_LEV_SIZE; j++) {
if (dv_vlc_map[i][j].size == 0) {
dv_vlc_map[i][j].vlc = dv_vlc_map[0][j].vlc |
(dv_vlc_map[i-1][0].vlc << (dv_vlc_map[0][j].size));
dv_vlc_map[i][j].size = dv_vlc_map[i-1][0].size +
(dv_vlc_map[i - 1][0].vlc <<
dv_vlc_map[0][j].size);
dv_vlc_map[i][j].size = dv_vlc_map[i - 1][0].size +
dv_vlc_map[0][j].size;
}
}
#else
for (j = 1; j < DV_VLC_MAP_LEV_SIZE/2; j++) {
for (j = 1; j < DV_VLC_MAP_LEV_SIZE / 2; j++) {
if (dv_vlc_map[i][j].size == 0) {
dv_vlc_map[i][j].vlc = dv_vlc_map[0][j].vlc |
(dv_vlc_map[i-1][0].vlc << (dv_vlc_map[0][j].size));
dv_vlc_map[i][j].size = dv_vlc_map[i-1][0].size +
(dv_vlc_map[i - 1][0].vlc <<
dv_vlc_map[0][j].size);
dv_vlc_map[i][j].size = dv_vlc_map[i - 1][0].size +
dv_vlc_map[0][j].size;
}
dv_vlc_map[i][((uint16_t)(-j))&0x1ff].vlc =
dv_vlc_map[i][j].vlc | 1;
dv_vlc_map[i][((uint16_t)(-j))&0x1ff].size =
dv_vlc_map[i][j].size;
dv_vlc_map[i][((uint16_t) (-j)) & 0x1ff].vlc = dv_vlc_map[i][j].vlc | 1;
dv_vlc_map[i][((uint16_t) (-j)) & 0x1ff].size = dv_vlc_map[i][j].size;
}
#endif
}
......
......@@ -43,28 +43,28 @@ const uint8_t ff_dv_zigzag248_direct[64] = {
/* unquant tables (not used directly) */
const uint8_t ff_dv_quant_shifts[22][4] = {
{ 3,3,4,4 },
{ 3,3,4,4 },
{ 2,3,3,4 },
{ 2,3,3,4 },
{ 2,2,3,3 },
{ 2,2,3,3 },
{ 1,2,2,3 },
{ 1,2,2,3 },
{ 1,1,2,2 },
{ 1,1,2,2 },
{ 0,1,1,2 },
{ 0,1,1,2 },
{ 0,0,1,1 },
{ 0,0,1,1 },
{ 0,0,0,1 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 0,0,0,0 },
{ 3, 3, 4, 4 },
{ 3, 3, 4, 4 },
{ 2, 3, 3, 4 },
{ 2, 3, 3, 4 },
{ 2, 2, 3, 3 },
{ 2, 2, 3, 3 },
{ 1, 2, 2, 3 },
{ 1, 2, 2, 3 },
{ 1, 1, 2, 2 },
{ 1, 1, 2, 2 },
{ 0, 1, 1, 2 },
{ 0, 1, 1, 2 },
{ 0, 0, 1, 1 },
{ 0, 0, 1, 1 },
{ 0, 0, 0, 1 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
};
const uint8_t ff_dv_quant_offset[4] = { 6, 3, 0, 1 };
......@@ -301,7 +301,7 @@ const uint8_t ff_dv_vlc_run[NB_DV_VLC] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
127,
127,
};
const uint8_t ff_dv_vlc_level[NB_DV_VLC] = {
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment