Skip to content

Commit 7bbbdac

Browse files
author
Clement Champetier
committed
mediaProperty: add based class StreamProperties
1 parent 8732cbe commit 7bbbdac

14 files changed

+92
-280
lines changed

src/AvTranscoder/mediaProperty/AttachementProperties.cpp

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/AvTranscoder/mediaProperty/AttachementProperties.hpp

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,17 @@
11
#ifndef _AV_TRANSCODER_MEDIA_PROPERTY_ATTACHEMENT_PROPERTIES_HPP
22
#define _AV_TRANSCODER_MEDIA_PROPERTY_ATTACHEMENT_PROPERTIES_HPP
33

4-
#include <AvTranscoder/common.hpp>
5-
#include <AvTranscoder/mediaProperty/util.hpp>
6-
#include <AvTranscoder/file/FormatContext.hpp>
4+
#include <AvTranscoder/mediaProperty/StreamProperties.hpp>
75

86
namespace avtranscoder
97
{
108

11-
class AvExport AttachementProperties
9+
class AvExport AttachementProperties: public StreamProperties
1210
{
1311
public:
14-
AttachementProperties( const FormatContext& formatContext, const size_t index );
15-
16-
size_t getStreamIndex() const { return _streamIndex; }
17-
size_t getStreamId() const;
18-
PropertyVector& getMetadatas() { return _metadatas; }
19-
20-
#ifndef SWIG
21-
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
22-
#endif
23-
24-
PropertyVector getPropertiesAsVector() const; ///< Return all attachement properties as a vector (name of property: value)
25-
26-
private:
27-
const AVFormatContext* _formatContext; ///< Has link (no ownership)
28-
29-
size_t _streamIndex;
30-
PropertyVector _metadatas;
12+
AttachementProperties( const FormatContext& formatContext, const size_t index )
13+
: StreamProperties( formatContext, index )
14+
{}
3115
};
3216

3317
}

src/AvTranscoder/mediaProperty/AudioProperties.cpp

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ namespace avtranscoder
1414
{
1515

1616
AudioProperties::AudioProperties( const FormatContext& formatContext, const size_t index )
17-
: _formatContext( &formatContext.getAVFormatContext() )
18-
, _codecContext( NULL )
19-
, _codec( NULL )
20-
, _streamIndex( index )
17+
: StreamProperties( formatContext, index )
2118
{
2219
if( _formatContext )
2320
_codecContext = _formatContext->streams[index]->codec;
@@ -231,19 +228,4 @@ PropertyVector AudioProperties::getPropertiesAsVector() const
231228
return data;
232229
}
233230

234-
PropertyMap AudioProperties::getPropertiesAsMap() const
235-
{
236-
PropertyMap dataMap;
237-
238-
PropertyVector dataVector( getPropertiesAsVector() );
239-
for( PropertyVector::const_iterator it = dataVector.begin();
240-
it != dataVector.end();
241-
++it )
242-
{
243-
dataMap.insert( std::make_pair( it->first, it->second ) );
244-
}
245-
246-
return dataMap;
247-
}
248-
249231
}

src/AvTranscoder/mediaProperty/AudioProperties.hpp

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
#ifndef _AV_TRANSCODER_MEDIA_PROPERTY_AUDIO_PROPERTIES_HPP
22
#define _AV_TRANSCODER_MEDIA_PROPERTY_AUDIO_PROPERTIES_HPP
33

4-
#include <AvTranscoder/common.hpp>
5-
#include <AvTranscoder/mediaProperty/util.hpp>
6-
#include <AvTranscoder/file/FormatContext.hpp>
4+
#include <AvTranscoder/mediaProperty/StreamProperties.hpp>
75

86
#include <string>
97

108
namespace avtranscoder
119
{
1210

13-
class AvExport AudioProperties
11+
class AvExport AudioProperties : public StreamProperties
1412
{
1513
public:
1614
AudioProperties( const FormatContext& formatContext, const size_t index );
@@ -23,7 +21,6 @@ class AvExport AudioProperties
2321
std::string getChannelName() const;
2422
std::string getChannelDescription() const;
2523

26-
size_t getStreamIndex() const { return _streamIndex; }
2724
size_t getStreamId() const;
2825
size_t getCodecId() const;
2926
size_t getSampleRate() const;
@@ -35,15 +32,11 @@ class AvExport AudioProperties
3532
Rational getTimeBase() const;
3633
double getDuration() const;
3734

38-
PropertyVector& getMetadatas() { return _metadatas; }
39-
4035
#ifndef SWIG
41-
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
4236
AVCodecContext& getAVCodecContext() { return *_codecContext; }
4337
#endif
4438

45-
PropertyMap getPropertiesAsMap() const; ///< Return all audio properties as a map (name of property, value)
46-
PropertyVector getPropertiesAsVector() const; ///< Same data with a specific order
39+
PropertyVector getPropertiesAsVector() const;
4740

4841
private:
4942
#ifndef SWIG
@@ -62,12 +55,8 @@ class AvExport AudioProperties
6255
#endif
6356

6457
private:
65-
const AVFormatContext* _formatContext; ///< Has link (no ownership)
6658
AVCodecContext* _codecContext; ///< Has link (no ownership)
6759
AVCodec* _codec; ///< Has link (no ownership)
68-
69-
size_t _streamIndex;
70-
PropertyVector _metadatas;
7160
};
7261

7362
}

src/AvTranscoder/mediaProperty/DataProperties.cpp

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,13 @@
22

33
extern "C" {
44
#include <libavcodec/avcodec.h>
5-
#include <libavutil/avutil.h>
6-
#include <libavutil/pixdesc.h>
75
}
86

97
#include <bitset>
10-
#include <stdexcept>
118

129
namespace avtranscoder
1310
{
1411

15-
DataProperties::DataProperties( const FormatContext& formatContext, const size_t index )
16-
: _formatContext( &formatContext.getAVFormatContext() )
17-
, _streamIndex( index )
18-
{
19-
//detectAncillaryData( _formatContext, _streamIndex );
20-
21-
if( _formatContext )
22-
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
23-
}
24-
25-
size_t DataProperties::getStreamId() const
26-
{
27-
if( ! _formatContext )
28-
throw std::runtime_error( "unknown format context" );
29-
return _formatContext->streams[_streamIndex]->id;
30-
}
31-
32-
PropertyVector DataProperties::getPropertiesAsVector() const
33-
{
34-
PropertyVector data;
35-
36-
try
37-
{
38-
detail::add( data, "streamId", getStreamId() );
39-
}
40-
catch( const std::exception& e )
41-
{
42-
detail::add( data, "streamId", e.what() );
43-
}
44-
45-
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
46-
{
47-
detail::add( data, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
48-
}
49-
50-
return data;
51-
}
52-
5312
void DataProperties::detectAncillaryData()
5413
{
5514
AVPacket pkt;

src/AvTranscoder/mediaProperty/DataProperties.hpp

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,20 @@
11
#ifndef _AV_TRANSCODER_MEDIA_PROPERTY_DATA_PROPERTIES_HPP
22
#define _AV_TRANSCODER_MEDIA_PROPERTY_DATA_PROPERTIES_HPP
33

4-
#include <AvTranscoder/common.hpp>
5-
#include <AvTranscoder/mediaProperty/util.hpp>
6-
#include <AvTranscoder/file/FormatContext.hpp>
4+
#include <AvTranscoder/mediaProperty/StreamProperties.hpp>
75

86
namespace avtranscoder
97
{
108

11-
class AvExport DataProperties
9+
class AvExport DataProperties : public StreamProperties
1210
{
1311
public:
14-
DataProperties( const FormatContext& formatContext, const size_t index );
15-
16-
size_t getStreamIndex() const { return _streamIndex; }
17-
size_t getStreamId() const;
18-
PropertyVector& getMetadatas() { return _metadatas; }
19-
20-
#ifndef SWIG
21-
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
22-
#endif
23-
24-
PropertyVector getPropertiesAsVector() const; ///< Return all data properties as a vector (name of property: value)
12+
DataProperties( const FormatContext& formatContext, const size_t index )
13+
: StreamProperties( formatContext, index )
14+
{}
2515

2616
private:
2717
void detectAncillaryData();
28-
29-
private:
30-
const AVFormatContext* _formatContext; ///< Has link (no ownership)
31-
32-
size_t _streamIndex;
33-
PropertyVector _metadatas;
3418
};
3519

3620
}

src/AvTranscoder/mediaProperty/SubtitleProperties.cpp renamed to src/AvTranscoder/mediaProperty/StreamProperties.cpp

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
1-
#include "SubtitleProperties.hpp"
1+
#include "StreamProperties.hpp"
22

33
#include <stdexcept>
44

55
namespace avtranscoder
66
{
77

8-
SubtitleProperties::SubtitleProperties( const FormatContext& formatContext, const size_t index )
8+
StreamProperties::StreamProperties( const FormatContext& formatContext, const size_t index )
99
: _formatContext( &formatContext.getAVFormatContext() )
1010
, _streamIndex( index )
1111
{
1212
if( _formatContext )
1313
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1414
}
1515

16-
size_t SubtitleProperties::getStreamId() const
16+
StreamProperties::~StreamProperties()
17+
{
18+
19+
}
20+
21+
size_t StreamProperties::getStreamId() const
1722
{
1823
if( ! _formatContext )
1924
throw std::runtime_error( "unknown format context" );
2025
return _formatContext->streams[_streamIndex]->id;
2126
}
2227

23-
PropertyVector SubtitleProperties::getPropertiesAsVector() const
28+
PropertyVector StreamProperties::getPropertiesAsVector() const
2429
{
2530
PropertyVector data;
2631

@@ -41,4 +46,19 @@ PropertyVector SubtitleProperties::getPropertiesAsVector() const
4146
return data;
4247
}
4348

49+
PropertyMap StreamProperties::getPropertiesAsMap() const
50+
{
51+
PropertyMap dataMap;
52+
53+
PropertyVector dataVector( getPropertiesAsVector() );
54+
for( PropertyVector::const_iterator it = dataVector.begin();
55+
it != dataVector.end();
56+
++it )
57+
{
58+
dataMap.insert( std::make_pair( it->first, it->second ) );
59+
}
60+
61+
return dataMap;
62+
}
63+
4464
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#ifndef _AV_TRANSCODER_MEDIA_PROPERTY_STREAM_PROPERTIES_HPP
2+
#define _AV_TRANSCODER_MEDIA_PROPERTY_STREAM_PROPERTIES_HPP
3+
4+
#include <AvTranscoder/common.hpp>
5+
#include <AvTranscoder/mediaProperty/util.hpp>
6+
#include <AvTranscoder/file/FormatContext.hpp>
7+
8+
namespace avtranscoder
9+
{
10+
11+
/// Virtual based class of properties for all types of stream
12+
class AvExport StreamProperties
13+
{
14+
public:
15+
StreamProperties( const FormatContext& formatContext, const size_t index );
16+
virtual ~StreamProperties() = 0;
17+
18+
size_t getStreamIndex() const { return _streamIndex; }
19+
size_t getStreamId() const;
20+
PropertyVector& getMetadatas() { return _metadatas; }
21+
22+
#ifndef SWIG
23+
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
24+
#endif
25+
26+
PropertyMap getPropertiesAsMap() const; ///< Return all properties as a map (name of property, value)
27+
PropertyVector getPropertiesAsVector() const; ///< Same data with a specific order
28+
29+
protected:
30+
const AVFormatContext* _formatContext; ///< Has link (no ownership)
31+
32+
size_t _streamIndex;
33+
PropertyVector _metadatas;
34+
};
35+
36+
}
37+
38+
#endif

0 commit comments

Comments
 (0)