Commit b78f81c8 authored by Diego Biurrun's avatar Diego Biurrun

h261: K&R formatting and prettyprinting cosmetics

parent 66ac3dbf
......@@ -28,51 +28,52 @@
#include "avcodec.h"
#include "h261.h"
#define IS_FIL(a) ((a)&MB_TYPE_H261_FIL)
#define IS_FIL(a) ((a) & MB_TYPE_H261_FIL)
uint8_t ff_h261_rl_table_store[2][2*MAX_RUN + MAX_LEVEL + 3];
uint8_t ff_h261_rl_table_store[2][2 * MAX_RUN + MAX_LEVEL + 3];
static void h261_loop_filter(uint8_t *src, int stride)
{
int x,y,xy,yz;
int x, y, xy, yz;
int temp[64];
for(x=0; x<8; x++){
temp[x ] = 4*src[x ];
temp[x + 7*8] = 4*src[x + 7*stride];
for (x = 0; x < 8; x++) {
temp[x] = 4 * src[x];
temp[x + 7 * 8] = 4 * src[x + 7 * stride];
}
for(y=1; y<7; y++){
for(x=0; x<8; x++){
xy = y * stride + x;
yz = y * 8 + x;
temp[yz] = src[xy - stride] + 2*src[xy] + src[xy + stride];
for (y = 1; y < 7; y++) {
for (x = 0; x < 8; x++) {
xy = y * stride + x;
yz = y * 8 + x;
temp[yz] = src[xy - stride] + 2 * src[xy] + src[xy + stride];
}
}
for(y=0; y<8; y++){
src[ y*stride] = (temp[ y*8] + 2)>>2;
src[7+y*stride] = (temp[7+y*8] + 2)>>2;
for(x=1; x<7; x++){
xy = y * stride + x;
yz = y * 8 + x;
src[xy] = (temp[yz-1] + 2*temp[yz] + temp[yz+1] + 8)>>4;
for (y = 0; y < 8; y++) {
src[y * stride] = (temp[y * 8] + 2) >> 2;
src[y * stride + 7] = (temp[y * 8 + 7] + 2) >> 2;
for (x = 1; x < 7; x++) {
xy = y * stride + x;
yz = y * 8 + x;
src[xy] = (temp[yz - 1] + 2 * temp[yz] + temp[yz + 1] + 8) >> 4;
}
}
}
void ff_h261_loop_filter(MpegEncContext *s){
H261Context * h= (H261Context*)s;
const int linesize = s->linesize;
const int uvlinesize= s->uvlinesize;
uint8_t *dest_y = s->dest[0];
uint8_t *dest_cb= s->dest[1];
uint8_t *dest_cr= s->dest[2];
void ff_h261_loop_filter(MpegEncContext *s)
{
H261Context *h = (H261Context *)s;
const int linesize = s->linesize;
const int uvlinesize = s->uvlinesize;
uint8_t *dest_y = s->dest[0];
uint8_t *dest_cb = s->dest[1];
uint8_t *dest_cr = s->dest[2];
if(!(IS_FIL (h->mtype)))
if (!(IS_FIL(h->mtype)))
return;
h261_loop_filter(dest_y, linesize);
h261_loop_filter(dest_y + 8, linesize);
h261_loop_filter(dest_y + 8, linesize);
h261_loop_filter(dest_y + 8 * linesize, linesize);
h261_loop_filter(dest_y + 8 * linesize + 8, linesize);
h261_loop_filter(dest_cb, uvlinesize);
......
......@@ -33,7 +33,7 @@
/**
* H261Context
*/
typedef struct H261Context{
typedef struct H261Context {
MpegEncContext s;
int current_mba;
......@@ -44,11 +44,11 @@ typedef struct H261Context{
int current_mv_y;
int gob_number;
int gob_start_code_skipped; // 1 if gob start code is already read before gob header is read
}H261Context;
} H261Context;
#define MB_TYPE_H261_FIL 0x800000
extern uint8_t ff_h261_rl_table_store[2][2*MAX_RUN + MAX_LEVEL + 3];
extern uint8_t ff_h261_rl_table_store[2][2 * MAX_RUN + MAX_LEVEL + 3];
void ff_h261_loop_filter(MpegEncContext *s);
......
......@@ -27,38 +27,39 @@
#include "parser.h"
static int h261_find_frame_end(ParseContext *pc, AVCodecContext* avctx, const uint8_t *buf, int buf_size){
static int h261_find_frame_end(ParseContext *pc, AVCodecContext *avctx,
const uint8_t *buf, int buf_size)
{
int vop_found, i, j;
uint32_t state;
vop_found= pc->frame_start_found;
state= pc->state;
vop_found = pc->frame_start_found;
state = pc->state;
for(i=0; i<buf_size && !vop_found; i++){
state= (state<<8) | buf[i];
for(j=0; j<8; j++){
if(((state>>j)&0xFFFFF0) == 0x000100){
vop_found=1;
for (i = 0; i < buf_size && !vop_found; i++) {
state = (state << 8) | buf[i];
for (j = 0; j < 8; j++) {
if (((state >> j) & 0xFFFFF0) == 0x000100) {
vop_found = 1;
break;
}
}
}
if(vop_found){
for(; i<buf_size; i++){
state= (state<<8) | buf[i];
for(j=0; j<8; j++){
if(((state>>j)&0xFFFFF0) == 0x000100){
pc->frame_start_found=0;
pc->state= (state>>(3*8))+0xFF00;
return i-2;
if (vop_found) {
for (; i < buf_size; i++) {
state = (state << 8) | buf[i];
for (j = 0; j < 8; j++) {
if (((state >> j) & 0xFFFFF0) == 0x000100) {
pc->frame_start_found = 0;
pc->state = (state >> (3 * 8)) + 0xFF00;
return i - 2;
}
}
}
}
pc->frame_start_found= vop_found;
pc->state= state;
pc->frame_start_found = vop_found;
pc->state = state;
return END_NOT_FOUND;
}
......@@ -70,13 +71,13 @@ static int h261_parse(AVCodecParserContext *s,
ParseContext *pc = s->priv_data;
int next;
next= h261_find_frame_end(pc,avctx, buf, buf_size);
next = h261_find_frame_end(pc, avctx, buf, buf_size);
if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) {
*poutbuf = NULL;
*poutbuf = NULL;
*poutbuf_size = 0;
return buf_size;
}
*poutbuf = buf;
*poutbuf = buf;
*poutbuf_size = buf_size;
return next;
}
......
......@@ -28,6 +28,7 @@
#define AVCODEC_H261DATA_H
#include <stdint.h>
#include "h261.h"
// H.261 VLC table for macroblock addressing
......@@ -41,8 +42,8 @@ static const uint8_t h261_mba_code[35] = {
32, 31, 30, 29,
28, 27, 26, 25,
24,
15, //(MBA stuffing)
1 //(start code)
15, // (MBA stuffing)
1 // (start code)
};
static const uint8_t h261_mba_bits[35] = {
......@@ -55,102 +56,100 @@ static const uint8_t h261_mba_bits[35] = {
11, 11, 11, 11,
11, 11, 11, 11,
11,
11, //(MBA stuffing)
16 //(start code)
11, // (MBA stuffing)
16 // (start code)
};
//H.261 VLC table for macroblock type
// H.261 VLC table for macroblock type
static const uint8_t h261_mtype_code[10] = {
1, 1, 1, 1,
1, 1, 1, 1,
1, 1
1, 1, 1, 1,
1, 1, 1, 1,
1, 1
};
static const uint8_t h261_mtype_bits[10] = {
4, 7, 1, 5,
9, 8, 10, 3,
2, 6
4, 7, 1, 5,
9, 8, 10, 3,
2, 6
};
static const int h261_mtype_map[10]= {
MB_TYPE_INTRA4x4,
MB_TYPE_INTRA4x4 | MB_TYPE_QUANT,
MB_TYPE_CBP,
MB_TYPE_QUANT | MB_TYPE_CBP,
MB_TYPE_16x16,
MB_TYPE_CBP | MB_TYPE_16x16,
MB_TYPE_QUANT | MB_TYPE_CBP | MB_TYPE_16x16,
MB_TYPE_16x16 | MB_TYPE_H261_FIL,
MB_TYPE_CBP | MB_TYPE_16x16 | MB_TYPE_H261_FIL,
MB_TYPE_QUANT | MB_TYPE_CBP | MB_TYPE_16x16 | MB_TYPE_H261_FIL
static const int h261_mtype_map[10] = {
MB_TYPE_INTRA4x4,
MB_TYPE_INTRA4x4 | MB_TYPE_QUANT,
MB_TYPE_CBP,
MB_TYPE_CBP | MB_TYPE_QUANT,
MB_TYPE_16x16,
MB_TYPE_16x16 | MB_TYPE_CBP,
MB_TYPE_16x16 | MB_TYPE_CBP | MB_TYPE_QUANT,
MB_TYPE_16x16 | MB_TYPE_H261_FIL,
MB_TYPE_16x16 | MB_TYPE_H261_FIL | MB_TYPE_CBP,
MB_TYPE_16x16 | MB_TYPE_H261_FIL | MB_TYPE_CBP | MB_TYPE_QUANT
};
//H.261 VLC table for motion vectors
// H.261 VLC table for motion vectors
static const uint8_t h261_mv_tab[17][2] = {
{1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
{11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10}, {12,10}
{ 1, 1 }, { 1, 2 }, { 1, 3 }, { 1, 4 }, { 3, 6 }, { 5, 7 }, { 4, 7 }, { 3, 7 },
{ 11, 9 }, { 10, 9 }, { 9, 9 }, { 17, 10 }, { 16, 10 }, { 15, 10 }, { 14, 10 }, { 13, 10 }, { 12, 10 }
};
static const int mvmap[17] =
{
static const int mvmap[17] = {
0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
};
//H.261 VLC table for coded block pattern
static const uint8_t h261_cbp_tab[63][2] =
{
{11,5}, {9,5}, {13,6}, {13,4}, {23,7}, {19,7}, {31,8}, {12,4},
{22,7}, {18,7}, {30,8}, {19,5}, {27,8}, {23,8}, {19,8}, {11,4},
{21,7}, {17,7}, {29,8}, {17,5}, {25,8}, {21,8}, {17,8}, {15,6},
{15,8}, {13,8}, {3,9}, {15,5}, {11,8}, {7,8}, {7,9}, {10,4},
{20,7}, {16,7}, {28,8}, {14,6}, {14,8}, {12,8}, {2,9}, {16,5},
{24,8}, {20,8}, {16,8}, {14,5}, {10,8}, {6,8}, {6,9}, {18,5},
{26,8}, {22,8}, {18,8}, {13,5}, {9,8}, {5,8}, {5,9}, {12,5},
{8,8}, {4,8}, {4,9}, {7,3}, {10,5}, {8,5}, {12,6}
// H.261 VLC table for coded block pattern
static const uint8_t h261_cbp_tab[63][2] = {
{ 11, 5 }, { 9, 5 }, { 13, 6 }, { 13, 4 }, { 23, 7 }, { 19, 7 }, { 31, 8 }, { 12, 4 },
{ 22, 7 }, { 18, 7 }, { 30, 8 }, { 19, 5 }, { 27, 8 }, { 23, 8 }, { 19, 8 }, { 11, 4 },
{ 21, 7 }, { 17, 7 }, { 29, 8 }, { 17, 5 }, { 25, 8 }, { 21, 8 }, { 17, 8 }, { 15, 6 },
{ 15, 8 }, { 13, 8 }, { 3, 9 }, { 15, 5 }, { 11, 8 }, { 7, 8 }, { 7, 9 }, { 10, 4 },
{ 20, 7 }, { 16, 7 }, { 28, 8 }, { 14, 6 }, { 14, 8 }, { 12, 8 }, { 2, 9 }, { 16, 5 },
{ 24, 8 }, { 20, 8 }, { 16, 8 }, { 14, 5 }, { 10, 8 }, { 6, 8 }, { 6, 9 }, { 18, 5 },
{ 26, 8 }, { 22, 8 }, { 18, 8 }, { 13, 5 }, { 9, 8 }, { 5, 8 }, { 5, 9 }, { 12, 5 },
{ 8, 8 }, { 4, 8 }, { 4, 9 }, { 7, 3 }, { 10, 5 }, { 8, 5 }, { 12, 6 }
};
//H.261 VLC table for transform coefficients
// H.261 VLC table for transform coefficients
static const uint16_t h261_tcoeff_vlc[65][2] = {
{ 0x2, 2 }, { 0x3, 2 },{ 0x4, 4 },{ 0x5, 5 },
{ 0x6, 7 },{ 0x26, 8 },{ 0x21, 8 },{ 0xa, 10 },
{ 0x1d, 12 },{ 0x18, 12 },{ 0x13, 12 },{ 0x10 , 12 },
{ 0x1a, 13},{ 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 },
{ 0x3, 3 }, { 0x6, 6 }, { 0x25 , 8 }, { 0xc, 10 },
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x5, 4},
{ 0x4, 7}, { 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 },
{ 0x7, 5 }, { 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 },
{ 0x6, 5 }, { 0xf, 10 }, { 0x12, 12}, { 0x7, 6},
{ 0x9 , 10 }, { 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 },
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12},
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
{ 0x23, 8 }, { 0x22, 8 }, { 0x20, 8 }, { 0xe , 10 },
{ 0xd, 10 }, { 0x8, 10 },{ 0x1f, 12 }, { 0x1a, 12 },
{ 0x19, 12 }, { 0x17, 12 }, { 0x16, 12}, { 0x1f, 13},
{ 0x1e, 13 }, { 0x1d, 13 }, { 0x1c, 13}, { 0x1b, 13},
{ 0x1, 6 } //escape
{ 0x2, 2 }, { 0x3, 2 }, { 0x4, 4 }, { 0x5, 5 },
{ 0x6, 7 }, { 0x26, 8 }, { 0x21, 8 }, { 0xa, 10 },
{ 0x1d, 12 }, { 0x18, 12 }, { 0x13, 12 }, { 0x10, 12 },
{ 0x1a, 13 }, { 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 },
{ 0x3, 3 }, { 0x6, 6 }, { 0x25, 8 }, { 0xc, 10 },
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x5, 4 },
{ 0x4, 7 }, { 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 },
{ 0x7, 5 }, { 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 },
{ 0x6, 5 }, { 0xf, 10 }, { 0x12, 12 }, { 0x7, 6 },
{ 0x9, 10 }, { 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 },
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12 },
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
{ 0x23, 8 }, { 0x22, 8 }, { 0x20, 8 }, { 0xe, 10 },
{ 0xd, 10 }, { 0x8, 10 }, { 0x1f, 12 }, { 0x1a, 12 },
{ 0x19, 12 }, { 0x17, 12 }, { 0x16, 12 }, { 0x1f, 13 },
{ 0x1e, 13 }, { 0x1d, 13 }, { 0x1c, 13 }, { 0x1b, 13 },
{ 0x1, 6 } // escape
};
static const int8_t h261_tcoeff_level[64] = {
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
1, 2, 3, 4, 5, 6, 7, 1,
2, 3, 4, 5, 1, 2, 3, 4,
1, 2, 3, 1, 2, 3, 1, 2,
1, 2, 1, 2, 1, 2, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
1, 2, 3, 4, 5, 6, 7, 1,
2, 3, 4, 5, 1, 2, 3, 4,
1, 2, 3, 1, 2, 3, 1, 2,
1, 2, 1, 2, 1, 2, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
};
static const int8_t h261_tcoeff_run[64] = {
0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 5, 5, 5, 6, 6, 7,
7, 8, 8, 9, 9, 10, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26
0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 5, 5, 5, 6, 6, 7,
7, 8, 8, 9, 9, 10, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26
};
static RLTable h261_rl_tcoeff = {
......
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