Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
a3dbd459
Commit
a3dbd459
authored
Apr 04, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dv: Merge dvquant.h into dvdata.c where all other DV tables reside.
parent
05afc5f5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
112 additions
and
136 deletions
+112
-136
dv.c
libavcodec/dv.c
+8
-9
dvdata.c
libavcodec/dvdata.c
+93
-0
dvdata.h
libavcodec/dvdata.h
+10
-0
dvdec.c
libavcodec/dvdec.c
+1
-2
dvquant.h
libavcodec/dvquant.h
+0
-125
No files found.
libavcodec/dv.c
View file @
a3dbd459
...
...
@@ -46,7 +46,6 @@
#include "put_bits.h"
#include "simple_idct.h"
#include "dvdata.h"
#include "dvquant.h"
#include "dv_tablegen.h"
/* XXX: also include quantization */
...
...
@@ -204,11 +203,11 @@ int ff_dv_init_dynamic_tables(const DVprofile *d)
factor1
=
&
d
->
idct_factor
[
0
];
factor2
=
&
d
->
idct_factor
[
DV_PROFILE_IS_HD
(
d
)
?
4096
:
2816
];
if
(
d
->
height
==
720
)
{
iweight1
=
&
dv_iweight_720_y
[
0
];
iweight2
=
&
dv_iweight_720_c
[
0
];
iweight1
=
&
ff_
dv_iweight_720_y
[
0
];
iweight2
=
&
ff_
dv_iweight_720_c
[
0
];
}
else
{
iweight1
=
&
dv_iweight_1080_y
[
0
];
iweight2
=
&
dv_iweight_1080_c
[
0
];
iweight1
=
&
ff_
dv_iweight_1080_y
[
0
];
iweight2
=
&
ff_
dv_iweight_1080_c
[
0
];
}
if
(
DV_PROFILE_IS_HD
(
d
))
{
for
(
c
=
0
;
c
<
4
;
c
++
)
{
...
...
@@ -220,12 +219,12 @@ int ff_dv_init_dynamic_tables(const DVprofile *d)
}
}
}
else
{
iweight1
=
&
dv_iweight_88
[
0
];
for
(
j
=
0
;
j
<
2
;
j
++
,
iweight1
=
&
dv_iweight_248
[
0
])
{
iweight1
=
&
ff_
dv_iweight_88
[
0
];
for
(
j
=
0
;
j
<
2
;
j
++
,
iweight1
=
&
ff_
dv_iweight_248
[
0
])
{
for
(
s
=
0
;
s
<
22
;
s
++
)
{
for
(
i
=
c
=
0
;
c
<
4
;
c
++
)
{
for
(;
i
<
dv_quant_areas
[
c
];
i
++
)
{
*
factor1
=
iweight1
[
i
]
<<
(
dv_quant_shifts
[
s
][
c
]
+
1
);
*
factor1
=
iweight1
[
i
]
<<
(
ff_
dv_quant_shifts
[
s
][
c
]
+
1
);
*
factor2
++
=
(
*
factor1
++
)
<<
1
;
}
}
...
...
@@ -609,7 +608,7 @@ static inline void dv_guess_qnos(EncBlockInfo* blks, int* qnos)
size
[
i
]
=
0
;
for
(
j
=
0
;
j
<
6
;
j
++
,
b
++
)
{
for
(
a
=
0
;
a
<
4
;
a
++
)
{
if
(
b
->
area_q
[
a
]
!=
dv_quant_shifts
[
qnos
[
i
]
+
dv_quant_offset
[
b
->
cno
]][
a
])
{
if
(
b
->
area_q
[
a
]
!=
ff_dv_quant_shifts
[
qnos
[
i
]
+
ff_
dv_quant_offset
[
b
->
cno
]][
a
])
{
b
->
bit_size
[
a
]
=
1
;
// 4 areas 4 bits for EOB :)
b
->
area_q
[
a
]
++
;
prev
=
b
->
prev
[
a
];
...
...
libavcodec/dvdata.c
View file @
a3dbd459
...
...
@@ -29,6 +29,99 @@
#include "avcodec.h"
#include "dvdata.h"
/* 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
},
};
const
uint8_t
ff_dv_quant_offset
[
4
]
=
{
6
,
3
,
0
,
1
};
const
int
ff_dv_iweight_88
[
64
]
=
{
32768
,
16710
,
16710
,
17735
,
17015
,
17735
,
18197
,
18079
,
18079
,
18197
,
18725
,
18559
,
19196
,
18559
,
18725
,
19284
,
19108
,
19692
,
19692
,
19108
,
19284
,
21400
,
19645
,
20262
,
20214
,
20262
,
19645
,
21400
,
22733
,
21845
,
20867
,
20815
,
20815
,
20867
,
21845
,
22733
,
23173
,
23173
,
21400
,
21400
,
21400
,
23173
,
23173
,
24600
,
23764
,
22017
,
22017
,
23764
,
24600
,
25267
,
24457
,
22672
,
24457
,
25267
,
25971
,
25191
,
25191
,
25971
,
26715
,
27962
,
26715
,
29642
,
29642
,
31536
,
};
const
int
ff_dv_iweight_248
[
64
]
=
{
32768
,
17735
,
16710
,
18079
,
18725
,
21400
,
17735
,
19196
,
19108
,
21845
,
16384
,
17735
,
18725
,
21400
,
16710
,
18079
,
20262
,
23173
,
18197
,
19692
,
18725
,
20262
,
20815
,
23764
,
17735
,
19196
,
19108
,
21845
,
20262
,
23173
,
18197
,
19692
,
21400
,
24457
,
19284
,
20867
,
21400
,
23173
,
22017
,
25191
,
18725
,
20262
,
20815
,
23764
,
21400
,
24457
,
19284
,
20867
,
24457
,
27962
,
22733
,
24600
,
25971
,
29642
,
21400
,
23173
,
22017
,
25191
,
24457
,
27962
,
22733
,
24600
,
25971
,
29642
,
};
/**
* The "inverse" DV100 weights are actually just the spec weights (zig-zagged).
*/
const
int
ff_dv_iweight_1080_y
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
18
,
19
,
18
,
18
,
19
,
19
,
19
,
19
,
19
,
19
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
45
,
45
,
42
,
42
,
42
,
45
,
45
,
48
,
46
,
43
,
43
,
46
,
48
,
49
,
48
,
44
,
48
,
49
,
101
,
98
,
98
,
101
,
104
,
109
,
104
,
116
,
116
,
123
,
};
const
int
ff_dv_iweight_1080_c
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
25
,
25
,
25
,
25
,
26
,
25
,
26
,
25
,
26
,
26
,
26
,
27
,
27
,
26
,
26
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
91
,
91
,
84
,
84
,
84
,
91
,
91
,
96
,
93
,
86
,
86
,
93
,
96
,
197
,
191
,
177
,
191
,
197
,
203
,
197
,
197
,
203
,
209
,
219
,
209
,
232
,
232
,
246
,
};
const
int
ff_dv_iweight_720_y
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
18
,
19
,
18
,
18
,
19
,
19
,
19
,
19
,
19
,
19
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
68
,
68
,
63
,
63
,
63
,
68
,
68
,
96
,
92
,
86
,
86
,
92
,
96
,
98
,
96
,
88
,
96
,
98
,
202
,
196
,
196
,
202
,
208
,
218
,
208
,
232
,
232
,
246
,
};
const
int
ff_dv_iweight_720_c
[
64
]
=
{
128
,
24
,
24
,
26
,
26
,
26
,
36
,
36
,
36
,
36
,
36
,
36
,
38
,
36
,
36
,
38
,
38
,
38
,
38
,
38
,
38
,
84
,
76
,
80
,
80
,
80
,
76
,
84
,
88
,
86
,
82
,
82
,
82
,
82
,
86
,
88
,
182
,
182
,
168
,
168
,
168
,
182
,
182
,
192
,
186
,
192
,
172
,
186
,
192
,
394
,
382
,
354
,
382
,
394
,
406
,
394
,
394
,
406
,
418
,
438
,
418
,
464
,
464
,
492
,
};
static
DVwork_chunk
work_chunks_dv25pal
[
1
*
12
*
27
];
static
DVwork_chunk
work_chunks_dv25pal411
[
1
*
12
*
27
];
static
DVwork_chunk
work_chunks_dv25ntsc
[
1
*
10
*
27
];
...
...
libavcodec/dvdata.h
View file @
a3dbd459
...
...
@@ -104,6 +104,16 @@ enum dv_pack_type {
dv_unknown_pack
=
0xff
,
};
extern
const
uint8_t
ff_dv_quant_shifts
[
22
][
4
];
extern
const
uint8_t
ff_dv_quant_offset
[
4
];
extern
const
int
ff_dv_iweight_88
[
64
];
extern
const
int
ff_dv_iweight_248
[
64
];
extern
const
int
ff_dv_iweight_1080_y
[
64
];
extern
const
int
ff_dv_iweight_1080_c
[
64
];
extern
const
int
ff_dv_iweight_720_y
[
64
];
extern
const
int
ff_dv_iweight_720_c
[
64
];
#define DV_PROFILE_IS_HD(p) ((p)->video_stype & 0x10)
#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))
...
...
libavcodec/dvdec.c
View file @
a3dbd459
...
...
@@ -42,7 +42,6 @@
#include "put_bits.h"
#include "simple_idct.h"
#include "dvdata.h"
#include "dvquant.h"
typedef
struct
BlockInfo
{
const
uint32_t
*
factor_table
;
...
...
@@ -183,7 +182,7 @@ static int dv_decode_video_segment(AVCodecContext *avctx, void *arg)
mb
->
idct_put
=
s
->
idct_put
[
dct_mode
&&
log2_blocksize
==
3
];
mb
->
scan_table
=
s
->
dv_zigzag
[
dct_mode
];
mb
->
factor_table
=
&
s
->
sys
->
idct_factor
[(
class1
==
3
)
*
2
*
22
*
64
+
dct_mode
*
22
*
64
+
(
quant
+
dv_quant_offset
[
class1
])
*
64
];
(
quant
+
ff_
dv_quant_offset
[
class1
])
*
64
];
}
dc
=
dc
<<
2
;
/* convert to unsigned because 128 is not added in the
...
...
libavcodec/dvquant.h
deleted
100644 → 0
View file @
05afc5f5
/*
* Quant and Weight for DV codec
* Copyright (c) 2002 Fabrice Bellard
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* Constants for DV codec.
*/
#ifndef AVCODEC_DVQUANT_H
#define AVCODEC_DVQUANT_H
#include <stdint.h>
/* unquant tables (not used directly) */
static
const
uint8_t
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
},
};
static
const
uint8_t
dv_quant_offset
[
4
]
=
{
6
,
3
,
0
,
1
};
static
const
int
dv_iweight_88
[
64
]
=
{
32768
,
16710
,
16710
,
17735
,
17015
,
17735
,
18197
,
18079
,
18079
,
18197
,
18725
,
18559
,
19196
,
18559
,
18725
,
19284
,
19108
,
19692
,
19692
,
19108
,
19284
,
21400
,
19645
,
20262
,
20214
,
20262
,
19645
,
21400
,
22733
,
21845
,
20867
,
20815
,
20815
,
20867
,
21845
,
22733
,
23173
,
23173
,
21400
,
21400
,
21400
,
23173
,
23173
,
24600
,
23764
,
22017
,
22017
,
23764
,
24600
,
25267
,
24457
,
22672
,
24457
,
25267
,
25971
,
25191
,
25191
,
25971
,
26715
,
27962
,
26715
,
29642
,
29642
,
31536
,
};
static
const
int
dv_iweight_248
[
64
]
=
{
32768
,
17735
,
16710
,
18079
,
18725
,
21400
,
17735
,
19196
,
19108
,
21845
,
16384
,
17735
,
18725
,
21400
,
16710
,
18079
,
20262
,
23173
,
18197
,
19692
,
18725
,
20262
,
20815
,
23764
,
17735
,
19196
,
19108
,
21845
,
20262
,
23173
,
18197
,
19692
,
21400
,
24457
,
19284
,
20867
,
21400
,
23173
,
22017
,
25191
,
18725
,
20262
,
20815
,
23764
,
21400
,
24457
,
19284
,
20867
,
24457
,
27962
,
22733
,
24600
,
25971
,
29642
,
21400
,
23173
,
22017
,
25191
,
24457
,
27962
,
22733
,
24600
,
25971
,
29642
,
};
/**
* The "inverse" DV100 weights are actually just the spec weights (zig-zagged).
*/
static
const
int
dv_iweight_1080_y
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
18
,
19
,
18
,
18
,
19
,
19
,
19
,
19
,
19
,
19
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
45
,
45
,
42
,
42
,
42
,
45
,
45
,
48
,
46
,
43
,
43
,
46
,
48
,
49
,
48
,
44
,
48
,
49
,
101
,
98
,
98
,
101
,
104
,
109
,
104
,
116
,
116
,
123
,
};
static
const
int
dv_iweight_1080_c
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
25
,
25
,
25
,
25
,
26
,
25
,
26
,
25
,
26
,
26
,
26
,
27
,
27
,
26
,
26
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
91
,
91
,
84
,
84
,
84
,
91
,
91
,
96
,
93
,
86
,
86
,
93
,
96
,
197
,
191
,
177
,
191
,
197
,
203
,
197
,
197
,
203
,
209
,
219
,
209
,
232
,
232
,
246
,
};
static
const
int
dv_iweight_720_y
[
64
]
=
{
128
,
16
,
16
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
18
,
18
,
19
,
18
,
18
,
19
,
19
,
19
,
19
,
19
,
19
,
42
,
38
,
40
,
40
,
40
,
38
,
42
,
44
,
43
,
41
,
41
,
41
,
41
,
43
,
44
,
68
,
68
,
63
,
63
,
63
,
68
,
68
,
96
,
92
,
86
,
86
,
92
,
96
,
98
,
96
,
88
,
96
,
98
,
202
,
196
,
196
,
202
,
208
,
218
,
208
,
232
,
232
,
246
,
};
static
const
int
dv_iweight_720_c
[
64
]
=
{
128
,
24
,
24
,
26
,
26
,
26
,
36
,
36
,
36
,
36
,
36
,
36
,
38
,
36
,
36
,
38
,
38
,
38
,
38
,
38
,
38
,
84
,
76
,
80
,
80
,
80
,
76
,
84
,
88
,
86
,
82
,
82
,
82
,
82
,
86
,
88
,
182
,
182
,
168
,
168
,
168
,
182
,
182
,
192
,
186
,
192
,
172
,
186
,
192
,
394
,
382
,
354
,
382
,
394
,
406
,
394
,
394
,
406
,
418
,
438
,
418
,
464
,
464
,
492
,
};
#endif
/* AVCODEC_DVQUANT_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment