2 * Copyright (C) 2005-2013 Team XBMC
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
23 #if (defined HAVE_CONFIG_H) && (!defined WIN32)
30 #include "DVDDemuxers/DVDDemux.h"
32 #if (defined USE_EXTERNAL_FFMPEG)
33 #if (defined HAVE_LIBAVCODEC_AVCODEC_H)
34 #include <libavcodec/avcodec.h>
35 #elif (defined HAVE_FFMPEG_AVCODEC_H)
36 #include <ffmpeg/avcodec.h>
39 #include "libavcodec/avcodec.h"
50 CDVDStreamInfo(const CDVDStreamInfo &right, bool withextradata = true);
51 CDVDStreamInfo(const CDemuxStream &right, bool withextradata = true);
55 void Clear(); // clears current information
56 bool Equal(const CDVDStreamInfo &right, bool withextradata);
57 bool Equal(const CDemuxStream &right, bool withextradata);
59 void Assign(const CDVDStreamInfo &right, bool withextradata);
60 void Assign(const CDemuxStream &right, bool withextradata);
64 bool software; //force software decoding
68 int fpsscale; // scale of 1000 and a rate of 29970 will result in 29.97 fps
70 int height; // height of the stream reported by the demuxer
71 int width; // width of the stream reported by the demuxer
72 float aspect; // display aspect as reported by demuxer
73 bool vfr; // variable framerate
74 bool stills; // there may be odd still frames in video
75 int level; // encoder level of the stream reported by the decoder. used to qualify hw decoders.
76 int profile; // encoder profile of the stream reported by the decoder. used to qualify hw decoders.
77 bool ptsinvalid; // pts cannot be trusted (avi's).
78 bool forced_aspect; // aspect is forced from container
79 int orientation; // orientation of the video in degress counter clockwise
93 void* extradata; // extra data for codec to use
94 unsigned int extrasize; // size of extra data
95 unsigned int codec_tag; // extra identifier hints for decoding
97 bool operator==(const CDVDStreamInfo& right) { return Equal(right, true);}
98 bool operator!=(const CDVDStreamInfo& right) { return !Equal(right, true);}
99 void operator=(const CDVDStreamInfo& right) { Assign(right, true); }
101 bool operator==(const CDemuxStream& right) { return Equal( CDVDStreamInfo(right, true), true);}
102 bool operator!=(const CDemuxStream& right) { return !Equal( CDVDStreamInfo(right, true), true);}
103 void operator=(const CDemuxStream& right) { Assign(right, true); }