1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file contains declarations for deleters for use with |scoped_ptr|. To
6 // avoid requiring additional #includes, the (inline) definitions are in
7 // ffmpeg_common.h. (Forward declarations of deleters aren't sufficient for
10 #ifndef MEDIA_FFMPEG_FFMPEG_DELETERS_H_
11 #define MEDIA_FFMPEG_FFMPEG_DELETERS_H_
15 // Wraps FFmpeg's av_free() in a class that can be passed as a template argument
16 // to scoped_ptr_malloc.
17 struct ScopedPtrAVFree
{
18 void operator()(void* x
) const;
21 // This assumes that the AVPacket being captured was allocated outside of
22 // FFmpeg via the new operator. Do not use this with AVPacket instances that
23 // are allocated via malloc() or av_malloc().
24 struct ScopedPtrAVFreePacket
{
25 void operator()(void* x
) const;
28 // Frees an AVCodecContext object in a class that can be passed as a Deleter
29 // argument to scoped_ptr_malloc.
30 struct ScopedPtrAVFreeContext
{
31 void operator()(void* x
) const;
34 // Frees an AVFrame object in a class that can be passed as a Deleter argument
35 // to scoped_ptr_malloc.
36 struct ScopedPtrAVFreeFrame
{
37 void operator()(void* x
) const;
42 #endif // MEDIA_FFMPEG_FFMPEG_DELETERS_H_