Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
e118bb1a
Commit
e118bb1a
authored
Sep 20, 2012
by
Matthieu Bouron
Committed by
Luca Barbato
Mar 06, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mxf: Introduce ff_mxf_get_samples_per_frame
Signed-off-by:
Luca Barbato
<
lu_zero@gentoo.org
>
parent
d48430c3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
47 additions
and
0 deletions
+47
-0
mxf.c
libavformat/mxf.c
+40
-0
mxf.h
libavformat/mxf.h
+7
-0
No files found.
libavformat/mxf.c
View file @
e118bb1a
...
...
@@ -106,3 +106,43 @@ int ff_mxf_decode_pixel_layout(const char pixel_layout[16], enum AVPixelFormat *
return
-
1
;
}
static
const
MXFSamplesPerFrame
mxf_spf
[]
=
{
{
{
1001
,
24000
},
{
2002
,
0
,
0
,
0
,
0
,
0
}
},
// FILM 23.976
{
{
1
,
24
},
{
2000
,
0
,
0
,
0
,
0
,
0
}
},
// FILM 24
{
{
1001
,
30000
},
{
1602
,
1601
,
1602
,
1601
,
1602
,
0
}
},
// NTSC 29.97
{
{
1001
,
60000
},
{
801
,
801
,
801
,
801
,
800
,
0
}
},
// NTSC 59.94
{
{
1
,
25
},
{
1920
,
0
,
0
,
0
,
0
,
0
}
},
// PAL 25
{
{
1
,
50
},
{
960
,
0
,
0
,
0
,
0
,
0
}
},
// PAL 50
};
static
const
AVRational
mxf_time_base
[]
=
{
{
1001
,
24000
},
{
1
,
24
},
{
1001
,
30000
},
{
1001
,
60000
},
{
1
,
25
},
{
1
,
50
},
{
0
,
0
}
};
const
MXFSamplesPerFrame
*
ff_mxf_get_samples_per_frame
(
AVFormatContext
*
s
,
AVRational
time_base
)
{
int
idx
=
av_find_nearest_q_idx
(
time_base
,
mxf_time_base
);
AVRational
diff
=
av_sub_q
(
time_base
,
mxf_time_base
[
idx
]);
diff
.
num
=
abs
(
diff
.
num
);
if
(
av_cmp_q
(
diff
,
(
AVRational
){
1
,
1000
})
>=
0
)
return
NULL
;
if
(
av_cmp_q
(
time_base
,
mxf_time_base
[
idx
]))
av_log
(
s
,
AV_LOG_WARNING
,
"%d/%d input time base matched %d/%d container time base
\n
"
,
time_base
.
num
,
time_base
.
den
,
mxf_spf
[
idx
].
time_base
.
num
,
mxf_spf
[
idx
].
time_base
.
den
);
return
&
mxf_spf
[
idx
];
}
libavformat/mxf.h
View file @
e118bb1a
...
...
@@ -21,6 +21,7 @@
#ifndef AVFORMAT_MXF_H
#define AVFORMAT_MXF_H
#include "avformat.h"
#include "libavcodec/avcodec.h"
#include <stdint.h>
...
...
@@ -66,11 +67,17 @@ typedef struct MXFCodecUL {
int
id
;
}
MXFCodecUL
;
typedef
struct
MXFSamplesPerFrame
{
struct
AVRational
time_base
;
int
samples_per_frame
[
6
];
}
MXFSamplesPerFrame
;
extern
const
MXFCodecUL
ff_mxf_data_definition_uls
[];
extern
const
MXFCodecUL
ff_mxf_codec_uls
[];
extern
const
MXFCodecUL
ff_mxf_pixel_format_uls
[];
int
ff_mxf_decode_pixel_layout
(
const
char
pixel_layout
[
16
],
enum
AVPixelFormat
*
pix_fmt
);
const
MXFSamplesPerFrame
*
ff_mxf_get_samples_per_frame
(
AVFormatContext
*
s
,
AVRational
time_base
);
#define PRINT_KEY(pc, s, x) av_dlog(pc, "%s %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n", s, \
(x)[0], (x)[1], (x)[2], (x)[3], (x)[4], (x)[5], (x)[6], (x)[7], (x)[8], (x)[9], (x)[10], (x)[11], (x)[12], (x)[13], (x)[14], (x)[15])
...
...
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