Skip to content

Commit 469bcb2

Browse files
committed
Merge pull request #150 from cchampet/dev_mediaPropertiesGetMapOrVector
MediaProperties: can get map or vector (only for video and audio)
2 parents 05389cd + e53ed0f commit 469bcb2

25 files changed

+295
-446
lines changed

src/AvTranscoder/file/OutputFile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ bool OutputFile::endWrap( )
132132
return true;
133133
}
134134

135-
void OutputFile::addMetadata( const PropertiesMap& dataMap )
135+
void OutputFile::addMetadata( const PropertyVector& data )
136136
{
137-
for( PropertiesMap::const_iterator it = dataMap.begin(); it != dataMap.end(); ++it )
137+
for( PropertyVector::const_iterator it = data.begin(); it != data.end(); ++it )
138138
{
139139
addMetadata( it->first, it->second );
140140
}

src/AvTranscoder/file/OutputFile.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class AvExport OutputFile : public IOutputFile
4141
* @brief Add metadata to the output file.
4242
* @note Depending on the format, you are not sure to find your metadata after the transcode.
4343
*/
44-
void addMetadata( const PropertiesMap& dataMap );
44+
void addMetadata( const PropertyVector& data );
4545
void addMetadata( const std::string& key, const std::string& value );
4646

4747
IOutputStream& getStream( const size_t streamId );

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-
PropertiesMap& getMetadatas() { return _metadatas; }
19-
20-
#ifndef SWIG
21-
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
22-
#endif
23-
24-
PropertiesMap getPropertiesAsMap() const; ///< Return all attachement properties as a map (name of property: value)
25-
26-
private:
27-
const AVFormatContext* _formatContext; ///< Has link (no ownership)
28-
29-
size_t _streamIndex;
30-
PropertiesMap _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: 24 additions & 26 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;
@@ -202,33 +199,34 @@ double AudioProperties::getDuration() const
202199
return duration;
203200
}
204201

205-
PropertiesMap AudioProperties::getPropertiesAsMap() const
206-
{
207-
PropertiesMap dataMap;
208-
209-
addProperty( dataMap, "streamId", &AudioProperties::getStreamId );
210-
addProperty( dataMap, "codecId", &AudioProperties::getCodecId );
211-
addProperty( dataMap, "codecName", &AudioProperties::getCodecName );
212-
addProperty( dataMap, "codecLongName", &AudioProperties::getCodecLongName );
213-
addProperty( dataMap, "sampleFormatName", &AudioProperties::getSampleFormatName );
214-
addProperty( dataMap, "sampleFormatLongName", &AudioProperties::getSampleFormatLongName );
215-
addProperty( dataMap, "sampleRate", &AudioProperties::getSampleRate );
216-
addProperty( dataMap, "bitRate", &AudioProperties::getBitRate );
217-
addProperty( dataMap, "nbSamples", &AudioProperties::getNbSamples );
218-
addProperty( dataMap, "channels", &AudioProperties::getChannels );
219-
addProperty( dataMap, "channelLayout", &AudioProperties::getChannelLayout );
220-
addProperty( dataMap, "channelName", &AudioProperties::getChannelName );
221-
addProperty( dataMap, "channelDescription", &AudioProperties::getChannelDescription );
222-
addProperty( dataMap, "ticksPerFrame", &AudioProperties::getTicksPerFrame );
223-
addProperty( dataMap, "timeBase", &AudioProperties::getTimeBase );
224-
addProperty( dataMap, "duration", &AudioProperties::getDuration );
202+
PropertyVector AudioProperties::getPropertiesAsVector() const
203+
{
204+
PropertyVector data;
205+
206+
addProperty( data, "streamId", &AudioProperties::getStreamId );
207+
detail::add( data, "streamIndex", getStreamIndex() );
208+
addProperty( data, "codecId", &AudioProperties::getCodecId );
209+
addProperty( data, "codecName", &AudioProperties::getCodecName );
210+
addProperty( data, "codecLongName", &AudioProperties::getCodecLongName );
211+
addProperty( data, "sampleFormatName", &AudioProperties::getSampleFormatName );
212+
addProperty( data, "sampleFormatLongName", &AudioProperties::getSampleFormatLongName );
213+
addProperty( data, "sampleRate", &AudioProperties::getSampleRate );
214+
addProperty( data, "bitRate", &AudioProperties::getBitRate );
215+
addProperty( data, "nbSamples", &AudioProperties::getNbSamples );
216+
addProperty( data, "channels", &AudioProperties::getChannels );
217+
addProperty( data, "channelLayout", &AudioProperties::getChannelLayout );
218+
addProperty( data, "channelName", &AudioProperties::getChannelName );
219+
addProperty( data, "channelDescription", &AudioProperties::getChannelDescription );
220+
addProperty( data, "ticksPerFrame", &AudioProperties::getTicksPerFrame );
221+
addProperty( data, "timeBase", &AudioProperties::getTimeBase );
222+
addProperty( data, "duration", &AudioProperties::getDuration );
225223

226224
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
227225
{
228-
detail::add( dataMap, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
226+
detail::add( data, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
229227
}
230228

231-
return dataMap;
229+
return data;
232230
}
233231

234232
}

src/AvTranscoder/mediaProperty/AudioProperties.hpp

Lines changed: 6 additions & 16 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,38 +32,31 @@ class AvExport AudioProperties
3532
Rational getTimeBase() const;
3633
double getDuration() const;
3734

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

45-
PropertiesMap getPropertiesAsMap() const; ///< Return all audio properties as a map (name of property: value)
39+
PropertyVector getPropertiesAsVector() const;
4640

4741
private:
4842
#ifndef SWIG
4943
template<typename T>
50-
void addProperty( PropertiesMap& dataMap, const std::string& key, T (AudioProperties::*getter)(void) const ) const
44+
void addProperty( PropertyVector& data, const std::string& key, T (AudioProperties::*getter)(void) const ) const
5145
{
5246
try
5347
{
54-
detail::add( dataMap, key, (this->*getter)() );
48+
detail::add( data, key, (this->*getter)() );
5549
}
5650
catch( const std::exception& e )
5751
{
58-
detail::add( dataMap, key, e.what() );
52+
detail::add( data, key, e.what() );
5953
}
6054
}
6155
#endif
6256

6357
private:
64-
const AVFormatContext* _formatContext; ///< Has link (no ownership)
6558
AVCodecContext* _codecContext; ///< Has link (no ownership)
6659
AVCodec* _codec; ///< Has link (no ownership)
67-
68-
size_t _streamIndex;
69-
PropertiesMap _metadatas;
7060
};
7161

7262
}

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-
PropertiesMap DataProperties::getPropertiesAsMap() const
33-
{
34-
PropertiesMap dataMap;
35-
36-
try
37-
{
38-
detail::add( dataMap, "streamId", getStreamId() );
39-
}
40-
catch( const std::exception& e )
41-
{
42-
detail::add( dataMap, "streamId", e.what() );
43-
}
44-
45-
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
46-
{
47-
detail::add( dataMap, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
48-
}
49-
50-
return dataMap;
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-
PropertiesMap& getMetadatas() { return _metadatas; }
19-
20-
#ifndef SWIG
21-
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
22-
#endif
23-
24-
PropertiesMap getPropertiesAsMap() const; ///< Return all data properties as a map (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-
PropertiesMap _metadatas;
3418
};
3519

3620
}

src/AvTranscoder/mediaProperty/FileProperties.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -129,33 +129,33 @@ size_t FileProperties::getNbStreams() const
129129
return _formatContext->nb_streams;
130130
}
131131

132-
PropertiesMap FileProperties::getPropertiesAsMap() const
132+
PropertyVector FileProperties::getPropertiesAsVector() const
133133
{
134-
PropertiesMap dataMap;
134+
PropertyVector data;
135135

136-
addProperty( dataMap, "filename", &FileProperties::getFilename );
137-
addProperty( dataMap, "formatName", &FileProperties::getFormatName );
138-
addProperty( dataMap, "formatLongName", &FileProperties::getFormatLongName );
136+
addProperty( data, "filename", &FileProperties::getFilename );
137+
addProperty( data, "formatName", &FileProperties::getFormatName );
138+
addProperty( data, "formatLongName", &FileProperties::getFormatLongName );
139139

140-
addProperty( dataMap, "startTime", &FileProperties::getStartTime );
141-
addProperty( dataMap, "duration", &FileProperties::getDuration );
142-
addProperty( dataMap, "bitrate", &FileProperties::getBitRate );
143-
addProperty( dataMap, "numberOfStreams", &FileProperties::getNbStreams );
144-
addProperty( dataMap, "numberOfPrograms", &FileProperties::getProgramsCount );
140+
addProperty( data, "startTime", &FileProperties::getStartTime );
141+
addProperty( data, "duration", &FileProperties::getDuration );
142+
addProperty( data, "bitrate", &FileProperties::getBitRate );
143+
addProperty( data, "numberOfStreams", &FileProperties::getNbStreams );
144+
addProperty( data, "numberOfPrograms", &FileProperties::getProgramsCount );
145145

146-
detail::add( dataMap, "numberOfVideoStreams", getNbVideoStreams() );
147-
detail::add( dataMap, "numberOfAudioStreams", getNbAudioStreams() );
148-
detail::add( dataMap, "numberOfDataStreams", getNbDataStreams() );
149-
detail::add( dataMap, "numberOfSubtitleStreams", getNbSubtitleStreams() );
150-
detail::add( dataMap, "numberOfAttachementStreams", getNbAttachementStreams() );
151-
detail::add( dataMap, "numberOfUnknownStreams", getNbUnknownStreams() );
146+
detail::add( data, "numberOfVideoStreams", getNbVideoStreams() );
147+
detail::add( data, "numberOfAudioStreams", getNbAudioStreams() );
148+
detail::add( data, "numberOfDataStreams", getNbDataStreams() );
149+
detail::add( data, "numberOfSubtitleStreams", getNbSubtitleStreams() );
150+
detail::add( data, "numberOfAttachementStreams", getNbAttachementStreams() );
151+
detail::add( data, "numberOfUnknownStreams", getNbUnknownStreams() );
152152

153153
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
154154
{
155-
detail::add( dataMap, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
155+
detail::add( data, _metadatas.at( metadataIndex ).first, _metadatas.at( metadataIndex ).second );
156156
}
157157

158-
return dataMap;
158+
return data;
159159
}
160160

161161
void FileProperties::clearStreamProperties()

0 commit comments

Comments
 (0)