]> git.sesse.net Git - vlc/blob - modules/codec/h264_nal.h
adjust: stick to single precision
[vlc] / modules / codec / h264_nal.h
1 /*****************************************************************************
2  * Copyright © 2010-2014 VideoLAN
3  *
4  * Authors: Jean-Baptiste Kempf <jb@videolan.org>
5  *
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.
10  *
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.
15  *
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  *****************************************************************************/
20
21 #ifndef H264_NAL_H
22 # define H264_NAL_H
23
24 # ifdef HAVE_CONFIG_H
25 #  include "config.h"
26 # endif
27
28 # include <vlc_common.h>
29 # include <vlc_codec.h>
30
31 /* Parse the SPS/PPS Metadata and convert it to annex b format */
32 int convert_sps_pps( decoder_t *p_dec, const uint8_t *p_buf,
33                      uint32_t i_buf_size, uint8_t *p_out_buf,
34                      uint32_t i_out_buf_size, uint32_t *p_sps_pps_size,
35                      uint32_t *p_nal_size);
36
37 /* Convert H.264 NAL format to annex b in-place */
38 struct H264ConvertState {
39     uint32_t nal_len;
40     uint32_t nal_pos;
41 };
42
43 void convert_h264_to_annexb( uint8_t *p_buf, uint32_t i_len,
44                              size_t i_nal_size,
45                              struct H264ConvertState *state );
46
47 /* Get level and Profile */
48 bool h264_get_profile_level(const es_format_t *p_fmt, size_t *p_profile,
49                             size_t *p_level, size_t *p_nal_size);
50
51 #endif /* H264_NAL_H */