FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
imx_dump_header_bsf.c
Go to the documentation of this file.
1
/*
2
* imx dump header bitstream filter
3
* Copyright (c) 2007 Baptiste Coudurier
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
/**
23
* @file
24
* imx dump header bitstream filter
25
* modifies bitstream to fit in mov and be decoded by final cut pro decoder
26
*/
27
28
#include "
avcodec.h
"
29
#include "
bytestream.h
"
30
31
32
static
int
imx_dump_header
(
AVBitStreamFilterContext
*bsfc,
AVCodecContext
*avctx,
const
char
*
args
,
33
uint8_t
**poutbuf,
int
*poutbuf_size,
34
const
uint8_t
*
buf
,
int
buf_size,
int
keyframe)
35
{
36
/* MXF essence element key */
37
static
const
uint8_t
imx_header[16] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x05,0x01,0x01,0x00 };
38
uint8_t
*poutbufp;
39
40
if
(avctx->
codec_id
!=
AV_CODEC_ID_MPEG2VIDEO
) {
41
av_log
(avctx,
AV_LOG_ERROR
,
"imx bitstream filter only applies to mpeg2video codec\n"
);
42
return
0;
43
}
44
45
*poutbuf =
av_malloc
(buf_size + 20 +
FF_INPUT_BUFFER_PADDING_SIZE
);
46
if
(!*poutbuf)
47
return
AVERROR
(ENOMEM);
48
poutbufp = *poutbuf;
49
bytestream_put_buffer
(&poutbufp, imx_header, 16);
50
bytestream_put_byte(&poutbufp, 0x83);
/* KLV BER long form */
51
bytestream_put_be24(&poutbufp, buf_size);
52
bytestream_put_buffer
(&poutbufp, buf, buf_size);
53
*poutbuf_size = poutbufp - *poutbuf;
54
return
1;
55
}
56
57
AVBitStreamFilter
ff_imx_dump_header_bsf
= {
58
.
name
=
"imxdump"
,
59
.filter =
imx_dump_header
,
60
};
Generated on Sun Mar 8 2015 02:34:53 for FFmpeg by
1.8.2