FFmpeg
Loading...
Searching...
No Matches
vt_internal.h
Go to the documentation of this file.
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#ifndef AVCODEC_VT_INTERNAL_H
20#define AVCODEC_VT_INTERNAL_H
21
22#include "avcodec.h"
23#include "videotoolbox.h"
24
25typedef struct VTContext {
26 // The current bitstream buffer.
27 uint8_t *bitstream;
28
29 // The current size of the bitstream.
31
32 // The reference size used for fast reallocation.
34
35 // The core video buffer
36 CVImageBufferRef frame;
37
38 // Current dummy frames context (depends on exact CVImageBufferRef params).
40
41 // Non-NULL if the new hwaccel API is used. This is only a separate struct
42 // to ease compatibility with the old API.
44
45 // Current H264 parameters (used to trigger decoder restart on SPS changes).
46 uint8_t sps[3];
48
49 void *logctx;
50} VTContext;
51
55 AVBufferRef *hw_frames_ctx);
57 const uint8_t *buffer,
58 uint32_t size);
60 const uint8_t *buffer,
61 uint32_t size);
64 const AVBufferRef *buffer_ref,
65 const uint8_t *buffer,
66 uint32_t size);
68 const uint8_t *buffer,
69 uint32_t size);
75
76#endif /* AVCODEC_VT_INTERNAL_H */
Libavcodec external API header.
static AVFrame * frame
A reference to a data buffer.
Definition buffer.h:82
main external API structure.
Definition avcodec.h:443
This structure describes decoded (raw) audio or video data.
Definition frame.h:472
This struct holds all the information that needs to be passed between the caller and libavcodec for i...
void * logctx
Definition vt_internal.h:49
CVImageBufferRef frame
Definition vt_internal.h:36
uint8_t sps[3]
Definition vt_internal.h:46
struct AVBufferRef * cached_hw_frames_ctx
Definition vt_internal.h:39
struct AVVideotoolboxContext * vt_ctx
Definition vt_internal.h:43
bool reconfig_needed
Definition vt_internal.h:47
uint8_t * bitstream
Definition vt_internal.h:27
int bitstream_size
Definition vt_internal.h:30
int allocated_size
Definition vt_internal.h:33
static char buffer[20]
Definition seek.c:32
int size
Public libavcodec Videotoolbox header.
int ff_videotoolbox_h264_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, uint32_t size)
CFDataRef ff_videotoolbox_avcc_extradata_create(AVCodecContext *avctx)
int ff_videotoolbox_alloc_frame(AVCodecContext *avctx, AVFrame *frame)
int ff_videotoolbox_buffer_append(VTContext *vtctx, const uint8_t *buffer, uint32_t size)
int ff_videotoolbox_common_init(AVCodecContext *avctx)
int ff_videotoolbox_buffer_copy(VTContext *vtctx, const uint8_t *buffer, uint32_t size)
int ff_videotoolbox_h264_start_frame(AVCodecContext *avctx, const AVBufferRef *buffer_ref, const uint8_t *buffer, uint32_t size)
int ff_videotoolbox_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
CFDataRef ff_videotoolbox_av1c_extradata_create(AVCodecContext *avctx)
CFDataRef ff_videotoolbox_hvcc_extradata_create(AVCodecContext *avctx)
int ff_videotoolbox_uninit(AVCodecContext *avctx)
int ff_videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame)
CFDataRef ff_videotoolbox_vpcc_extradata_create(AVCodecContext *avctx)