mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
lavc/h264: move some shared code from h264dec to h264_parse
This commit is contained in:
parent
df2ee38178
commit
d552f2535b
@ -24,9 +24,32 @@
|
||||
#ifndef AVCODEC_H264_PARSE_H
|
||||
#define AVCODEC_H264_PARSE_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
|
||||
#include "get_bits.h"
|
||||
#include "h264_ps.h"
|
||||
|
||||
// This table must be here because scan8[constant] must be known at compiletime
|
||||
static const uint8_t scan8[16 * 3 + 3] = {
|
||||
4 + 1 * 8, 5 + 1 * 8, 4 + 2 * 8, 5 + 2 * 8,
|
||||
6 + 1 * 8, 7 + 1 * 8, 6 + 2 * 8, 7 + 2 * 8,
|
||||
4 + 3 * 8, 5 + 3 * 8, 4 + 4 * 8, 5 + 4 * 8,
|
||||
6 + 3 * 8, 7 + 3 * 8, 6 + 4 * 8, 7 + 4 * 8,
|
||||
4 + 6 * 8, 5 + 6 * 8, 4 + 7 * 8, 5 + 7 * 8,
|
||||
6 + 6 * 8, 7 + 6 * 8, 6 + 7 * 8, 7 + 7 * 8,
|
||||
4 + 8 * 8, 5 + 8 * 8, 4 + 9 * 8, 5 + 9 * 8,
|
||||
6 + 8 * 8, 7 + 8 * 8, 6 + 9 * 8, 7 + 9 * 8,
|
||||
4 + 11 * 8, 5 + 11 * 8, 4 + 12 * 8, 5 + 12 * 8,
|
||||
6 + 11 * 8, 7 + 11 * 8, 6 + 12 * 8, 7 + 12 * 8,
|
||||
4 + 13 * 8, 5 + 13 * 8, 4 + 14 * 8, 5 + 14 * 8,
|
||||
6 + 13 * 8, 7 + 13 * 8, 6 + 14 * 8, 7 + 14 * 8,
|
||||
0 + 0 * 8, 0 + 5 * 8, 0 + 10 * 8
|
||||
};
|
||||
|
||||
/**
|
||||
* Memory management control operation opcode.
|
||||
*/
|
||||
@ -103,4 +126,13 @@ int ff_h264_decode_extradata(const uint8_t *data, int size, H264ParamSets *ps,
|
||||
*/
|
||||
int ff_h264_get_profile(const SPS *sps);
|
||||
|
||||
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
|
||||
{
|
||||
#if HAVE_BIGENDIAN
|
||||
return (b & 0xFFFF) + (a << 16);
|
||||
#else
|
||||
return (a & 0xFFFF) + (b << 16);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* AVCODEC_H264_PARSE_H */
|
||||
|
@ -642,32 +642,6 @@ void ff_h264_filter_mb(const H264Context *h, H264SliceContext *sl, int mb_x, int
|
||||
#define LUMA_DC_BLOCK_INDEX 48
|
||||
#define CHROMA_DC_BLOCK_INDEX 49
|
||||
|
||||
// This table must be here because scan8[constant] must be known at compiletime
|
||||
static const uint8_t scan8[16 * 3 + 3] = {
|
||||
4 + 1 * 8, 5 + 1 * 8, 4 + 2 * 8, 5 + 2 * 8,
|
||||
6 + 1 * 8, 7 + 1 * 8, 6 + 2 * 8, 7 + 2 * 8,
|
||||
4 + 3 * 8, 5 + 3 * 8, 4 + 4 * 8, 5 + 4 * 8,
|
||||
6 + 3 * 8, 7 + 3 * 8, 6 + 4 * 8, 7 + 4 * 8,
|
||||
4 + 6 * 8, 5 + 6 * 8, 4 + 7 * 8, 5 + 7 * 8,
|
||||
6 + 6 * 8, 7 + 6 * 8, 6 + 7 * 8, 7 + 7 * 8,
|
||||
4 + 8 * 8, 5 + 8 * 8, 4 + 9 * 8, 5 + 9 * 8,
|
||||
6 + 8 * 8, 7 + 8 * 8, 6 + 9 * 8, 7 + 9 * 8,
|
||||
4 + 11 * 8, 5 + 11 * 8, 4 + 12 * 8, 5 + 12 * 8,
|
||||
6 + 11 * 8, 7 + 11 * 8, 6 + 12 * 8, 7 + 12 * 8,
|
||||
4 + 13 * 8, 5 + 13 * 8, 4 + 14 * 8, 5 + 14 * 8,
|
||||
6 + 13 * 8, 7 + 13 * 8, 6 + 14 * 8, 7 + 14 * 8,
|
||||
0 + 0 * 8, 0 + 5 * 8, 0 + 10 * 8
|
||||
};
|
||||
|
||||
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
|
||||
{
|
||||
#if HAVE_BIGENDIAN
|
||||
return (b & 0xFFFF) + (a << 16);
|
||||
#else
|
||||
return (a & 0xFFFF) + (b << 16);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the chroma qp.
|
||||
*/
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavcodec/h264dsp.h"
|
||||
#include "libavcodec/h264data.h"
|
||||
#include "libavcodec/h264_parse.h"
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
|
Loading…
Reference in New Issue
Block a user