root/OpenSceneGraph/trunk/src/osgPlugins/ffmpeg/FFmpegPacket.hpp @ 9816

Revision 9816, 1.4 kB (checked in by robert, 6 years ago)

From Tanguy Fautre (Aris Technologies), ffmpeg plugin

RevLine 
[9816]1
2#ifndef HEADER_GUARD_OSGFFMPEG_FFMPEG_PACKET_H
3#define HEADER_GUARD_OSGFFMPEG_FFMPEG_PACKET_H
4
5#include "FFmpegHeaders.hpp"
6
7
8
9namespace osgFFmpeg
10{
11
12    struct FFmpegPacket
13    {
14
15        enum Type
16        {
17            PACKET_DATA,
18            PACKET_END_OF_STREAM,
19            PACKET_FLUSH
20        };
21
22
23        FFmpegPacket() :
24            type(PACKET_DATA)
25        {
26            packet.data = 0;
27        }
28
29        explicit FFmpegPacket(const Type type) :
30            type(type)
31        {
32            packet.data = 0;
33        }
34
35        explicit FFmpegPacket(const AVPacket & packet) :
36            packet(packet),
37            type(PACKET_DATA)
38        {
39           
40        }
41
42        void clear()
43        {
44            if (packet.data != 0)
45                av_free_packet(&packet);
46
47            release();
48        }
49
50        void release()
51        {
52            packet.data = 0;
53            type = PACKET_DATA;
54        }
55
56        bool valid() const
57        {
58            return (type != PACKET_DATA) ^ (packet.data != 0);
59        }
60
61        bool operator ! () const
62        {
63            return ! valid();
64        }
65
66        AVPacket    packet;
67        Type        type;
68    };
69
70    struct FFmpegPacketClear
71    {
72        void operator () (FFmpegPacket & packet) const
73        {
74            packet.clear();
75        }
76    };
77
78}
79
80
81
82#endif // HEADER_GUARD_OSGFFMPEG_FFMPEG_PACKET_H
Note: See TracBrowser for help on using the browser.