summaryrefslogtreecommitdiff
path: root/contrib/ffmpeg/libavcodec/dvdata.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ffmpeg/libavcodec/dvdata.h')
-rw-r--r--contrib/ffmpeg/libavcodec/dvdata.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/contrib/ffmpeg/libavcodec/dvdata.h b/contrib/ffmpeg/libavcodec/dvdata.h
index e688ffbb0..50ea537ef 100644
--- a/contrib/ffmpeg/libavcodec/dvdata.h
+++ b/contrib/ffmpeg/libavcodec/dvdata.h
@@ -24,6 +24,12 @@
* Constants for DV codec.
*/
+#ifndef FFMPEG_DVDATA_H
+#define FFMPEG_DVDATA_H
+
+#include "avcodec.h"
+#include "rational.h"
+
/*
* DVprofile is used to express the differences between various
* DV flavors. For now it's primarily used for differentiating
@@ -329,7 +335,7 @@ static const uint8_t dv_quant_shifts[22][4] = {
static const uint8_t dv_quant_offset[4] = { 6, 3, 0, 1 };
-/* NOTE: I prefer hardcoding the positionning of dv blocks, it is
+/* NOTE: I prefer hardcoding the positioning of dv blocks, it is
simpler :-) */
static const uint16_t dv_place_420[1620] = {
@@ -2534,7 +2540,7 @@ static const uint8_t dv_audio_shuffle625[12][9] = {
{ 31, 67, 103, 21, 57, 93, 11, 47, 83},
};
-static const __attribute__((unused)) int dv_audio_frequency[3] = {
+static const av_unused int dv_audio_frequency[3] = {
48000, 44100, 32000,
};
@@ -2655,18 +2661,18 @@ enum dv_pack_type {
/* largest possible DV frame, in bytes (PAL 50Mbps) */
#define DV_MAX_FRAME_SIZE 288000
-static inline const DVprofile* dv_frame_profile(uint8_t* frame)
+static inline const DVprofile* dv_frame_profile(const uint8_t* frame)
{
if ((frame[3] & 0x80) == 0) { /* DSF flag */
/* it's an NTSC format */
- if ((frame[80*5 + 48 + 3] & 0x4)) { /* 4:2:2 sampling */
+ if ((frame[80*5 + 48 + 3] & 0x4) && (frame[80*5 + 48] == dv_video_source)) { /* 4:2:2 sampling */
return &dv_profiles[3]; /* NTSC 50Mbps */
} else { /* 4:1:1 sampling */
return &dv_profiles[0]; /* NTSC 25Mbps */
}
} else {
/* it's a PAL format */
- if ((frame[80*5 + 48 + 3] & 0x4)) { /* 4:2:2 sampling */
+ if ((frame[80*5 + 48 + 3] & 0x4) && (frame[80*5 + 48] == dv_video_source)) { /* 4:2:2 sampling */
return &dv_profiles[4]; /* PAL 50Mbps */
} else if ((frame[5] & 0x07) == 0) { /* APT flag */
return &dv_profiles[1]; /* PAL 25Mbps 4:2:0 */
@@ -2722,3 +2728,5 @@ static inline int dv_write_ssyb_id(uint8_t syb_num, uint8_t fr, uint8_t* buf)
buf[2] = 0xff; /* reserved -- always 1 */
return 3;
}
+
+#endif /* FFMPEG_DVDATA_H */