1 /*****************************************************************************
2 * Copyright © 2010-2014 VideoLAN
4 * Authors: Jean-Baptiste Kempf <jb@videolan.org>
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19 *****************************************************************************/
28 # include <vlc_common.h>
29 # include <vlc_codec.h>
31 #define PROFILE_H264_BASELINE 66
32 #define PROFILE_H264_MAIN 77
33 #define PROFILE_H264_EXTENDED 88
34 #define PROFILE_H264_HIGH 100
35 #define PROFILE_H264_HIGH_10 110
36 #define PROFILE_H264_HIGH_422 122
37 #define PROFILE_H264_HIGH_444 144
38 #define PROFILE_H264_HIGH_444_PREDICTIVE 244
40 #define PROFILE_H264_CAVLC_INTRA 44
41 #define PROFILE_H264_SVC_BASELINE 83
42 #define PROFILE_H264_SVC_HIGH 86
43 #define PROFILE_H264_MVC_STEREO_HIGH 128
44 #define PROFILE_H264_MVC_MULTIVIEW_HIGH 118
46 /* Parse the SPS/PPS Metadata and convert it to annex b format */
47 int convert_sps_pps( decoder_t *p_dec, const uint8_t *p_buf,
48 uint32_t i_buf_size, uint8_t *p_out_buf,
49 uint32_t i_out_buf_size, uint32_t *p_sps_pps_size,
50 uint32_t *p_nal_size);
52 /* Convert H.264 NAL format to annex b in-place */
53 struct H264ConvertState {
58 void convert_h264_to_annexb( uint8_t *p_buf, uint32_t i_len,
60 struct H264ConvertState *state );
62 /* Get level and Profile */
63 bool h264_get_profile_level(const es_format_t *p_fmt, size_t *p_profile,
64 size_t *p_level, size_t *p_nal_size);
66 #endif /* H264_NAL_H */