blob: 9ff59e60f00939d45dba986048f91efc838bb33e [file] [log] [blame]
Dale Sather103f68e2016-03-21 17:07:19 -07001// Copyright 2016 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.
4
5#ifndef SERVICES_MEDIA_FRAMEWORK_FFMPEG_AV_PACKET_H_
6#define SERVICES_MEDIA_FRAMEWORK_FFMPEG_AV_PACKET_H_
7
8extern "C" {
9#include "third_party/ffmpeg/libavcodec/avcodec.h"
10#include "third_party/ffmpeg/libavformat/avformat.h"
11}
12
13namespace mojo {
14namespace media {
15namespace ffmpeg {
16
17struct AVPacketDeleter {
Dale Sather4ccdd212016-03-23 09:27:19 -070018 inline void operator()(AVPacket* ptr) const { av_free_packet(ptr); }
Dale Sather103f68e2016-03-21 17:07:19 -070019};
20
21using AvPacketPtr = std::unique_ptr<AVPacket, AVPacketDeleter>;
22
Dale Sather4ccdd212016-03-23 09:27:19 -070023struct AvPacket {
Dale Sather103f68e2016-03-21 17:07:19 -070024 static AvPacketPtr Create() {
25 AVPacket* av_packet = new AVPacket();
26 av_init_packet(av_packet);
27 return AvPacketPtr(av_packet);
28 }
29};
30
31} // namespace ffmpeg
32} // namespace media
33} // namespace mojo
34
Dale Sather4ccdd212016-03-23 09:27:19 -070035#endif // SERVICES_MEDIA_FRAMEWORK_FFMPEG_AV_PACKET_H_