Skip to content

Commit 1a51ae4

Browse files
committed
Merge pull request #10 from cchampet/mediaProperty_check_NULL
MediaProperty: check access and rename DataMap
2 parents 1227622 + 6f0532f commit 1a51ae4

20 files changed

+188
-105
lines changed

src/AvTranscoder/file/OutputFile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ bool OutputFile::endWrap( )
216216
return true;
217217
}
218218

219-
void OutputFile::addMetadata( const MetadatasMap& dataMap )
219+
void OutputFile::addMetadata( const PropertiesMap& dataMap )
220220
{
221-
for( MetadatasMap::const_iterator it = dataMap.begin(); it != dataMap.end(); ++it )
221+
for( PropertiesMap::const_iterator it = dataMap.begin(); it != dataMap.end(); ++it )
222222
{
223223
addMetadata( it->first, it->second );
224224
}

src/AvTranscoder/file/OutputFile.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class AvExport OutputFile
104104
* @brief Add metadata to the output file.
105105
* @note Depending on the format, you are not sure to find your metadata after the transcode.
106106
*/
107-
virtual void addMetadata( const MetadatasMap& dataMap );
107+
virtual void addMetadata( const PropertiesMap& dataMap );
108108
virtual void addMetadata( const std::string& key, const std::string& value );
109109

110110
virtual void setVerbose( bool verbose = false ){ _verbose = verbose; }

src/AvTranscoder/mediaProperty/AttachementProperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ AttachementProperties::AttachementProperties( const AVFormatContext* formatConte
1111
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1212
}
1313

14-
MetadatasMap AttachementProperties::getDataMap() const
14+
PropertiesMap AttachementProperties::getPropertiesAsMap() const
1515
{
16-
MetadatasMap dataMap;
16+
PropertiesMap dataMap;
1717

1818
detail::add( dataMap, "streamId", _streamId );
1919

src/AvTranscoder/mediaProperty/AttachementProperties.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,19 @@ class AvExport AttachementProperties
1717
AttachementProperties( const AVFormatContext* formatContext, const size_t index );
1818

1919
size_t getStreamId() const { return _streamId; }
20-
MetadatasMap& getMetadatas() { return _metadatas; }
20+
PropertiesMap& getMetadatas() { return _metadatas; }
2121

22+
#ifndef SWIG
2223
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
24+
#endif
2325

24-
MetadatasMap getDataMap() const;
26+
PropertiesMap getPropertiesAsMap() const; ///< Return all attachement properties as a map (name of property: value)
2527

2628
private:
2729
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2830

2931
size_t _streamId;
30-
MetadatasMap _metadatas;
32+
PropertiesMap _metadatas;
3133
};
3234

3335
}

src/AvTranscoder/mediaProperty/AudioProperties.cpp

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "AudioProperties.hpp"
22

3+
#include <stdexcept>
4+
35
extern "C" {
46
#include <libavcodec/avcodec.h>
57
#include <libavformat/avformat.h>
@@ -124,9 +126,37 @@ std::string AudioProperties::getChannelDescription() const
124126
#endif
125127
}
126128

127-
MetadatasMap AudioProperties::getDataMap() const
129+
size_t AudioProperties::getCodecId() const
130+
{
131+
if( ! _codecContext )
132+
throw std::runtime_error( "unknown codec context" );
133+
return _codecContext->codec_id;
134+
}
135+
136+
size_t AudioProperties::getSampleRate() const
137+
{
138+
if( ! _codecContext )
139+
throw std::runtime_error( "unknown codec context" );
140+
return _codecContext->sample_rate;
141+
}
142+
143+
size_t AudioProperties::getChannels() const
144+
{
145+
if( ! _codecContext )
146+
throw std::runtime_error( "unknown codec context" );
147+
return _codecContext->channels;
148+
}
149+
150+
size_t AudioProperties::getBitRate() const
151+
{
152+
if( ! _codecContext )
153+
throw std::runtime_error( "unknown codec context" );
154+
return _codecContext->bit_rate;
155+
}
156+
157+
PropertiesMap AudioProperties::getPropertiesAsMap() const
128158
{
129-
MetadatasMap dataMap;
159+
PropertiesMap dataMap;
130160

131161
detail::add( dataMap, "streamId", getStreamId() );
132162
detail::add( dataMap, "codecId", getCodecId() );

src/AvTranscoder/mediaProperty/AudioProperties.hpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,26 @@ class AvExport AudioProperties
2929
std::string getChannelName() const;
3030
std::string getChannelDescription() const;
3131
size_t getStreamId() const { return _streamId; }
32-
size_t getCodecId() const { return _codecContext->codec_id; }
33-
size_t getSampleRate() const { return _codecContext->sample_rate; }
34-
size_t getChannels() const { return _codecContext->channels; }
35-
size_t getBitRate() const { return _codecContext->bit_rate; }
36-
MetadatasMap& getMetadatas() { return _metadatas; }
32+
size_t getCodecId() const;
33+
size_t getSampleRate() const;
34+
size_t getChannels() const;
35+
size_t getBitRate() const;
36+
PropertiesMap& getMetadatas() { return _metadatas; }
3737

38+
#ifndef SWIG
3839
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
3940
AVCodecContext& getAVCodecContext() { return *_codecContext; }
41+
#endif
4042

41-
MetadatasMap getDataMap() const;
43+
PropertiesMap getPropertiesAsMap() const; ///< Return all audio properties as a map (name of property: value)
4244

4345
private:
4446
const AVFormatContext* _formatContext; ///< Has link (no ownership)
4547
AVCodecContext* _codecContext; ///< Has link (no ownership)
4648
AVCodec* _codec; ///< Has link (no ownership)
4749

4850
size_t _streamId;
49-
MetadatasMap _metadatas;
51+
PropertiesMap _metadatas;
5052
};
5153

5254
}

src/AvTranscoder/mediaProperty/DataProperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ DataProperties::DataProperties( const AVFormatContext* formatContext, const size
2222
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
2323
}
2424

25-
MetadatasMap DataProperties::getDataMap() const
25+
PropertiesMap DataProperties::getPropertiesAsMap() const
2626
{
27-
MetadatasMap dataMap;
27+
PropertiesMap dataMap;
2828

2929
detail::add( dataMap, "streamId", _streamId );
3030

src/AvTranscoder/mediaProperty/DataProperties.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ class AvExport DataProperties
1717
DataProperties( const AVFormatContext* formatContext, const size_t index );
1818

1919
size_t getStreamId() const { return _streamId; }
20-
MetadatasMap& getMetadatas() { return _metadatas; }
20+
PropertiesMap& getMetadatas() { return _metadatas; }
2121

22+
#ifndef SWIG
2223
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
24+
#endif
2325

24-
MetadatasMap getDataMap() const;
26+
PropertiesMap getPropertiesAsMap() const; ///< Return all data properties as a map (name of property: value)
2527

2628
private:
2729
void detectAncillaryData();
@@ -30,7 +32,7 @@ class AvExport DataProperties
3032
const AVFormatContext* _formatContext; ///< Has link (no ownership)
3133

3234
size_t _streamId;
33-
MetadatasMap _metadatas;
35+
PropertiesMap _metadatas;
3436
};
3537

3638
}

src/AvTranscoder/mediaProperty/FileProperties.cpp

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "FileProperties.hpp"
22

3+
#include <stdexcept>
4+
35
namespace avtranscoder
46
{
57

@@ -16,10 +18,72 @@ FileProperties::FileProperties( const AVFormatContext* formatContext )
1618
detail::fillMetadataDictionnary( _formatContext->metadata, _metadatas );
1719
}
1820

21+
std::string FileProperties::getFilename() const
22+
{
23+
if( ! _formatContext )
24+
throw std::runtime_error( "unknown format context" );
25+
return _formatContext->filename;
26+
}
27+
28+
std::string FileProperties::getFormatName() const
29+
{
30+
if( ! _formatContext || ! _formatContext->iformat )
31+
throw std::runtime_error( "unknown format context" );
32+
return _formatContext->iformat->name;
33+
}
34+
35+
std::string FileProperties::getFormatLongName() const
36+
{
37+
if( ! _formatContext || ! _formatContext->iformat )
38+
throw std::runtime_error( "unknown format context" );
39+
return _formatContext->iformat->long_name;
40+
}
41+
42+
size_t FileProperties::getProgramsCount() const
43+
{
44+
if( ! _formatContext )
45+
throw std::runtime_error( "unknown format context" );
46+
return _formatContext->nb_programs;
47+
}
48+
49+
double FileProperties::getStartTime() const
50+
{
51+
if( ! _formatContext )
52+
throw std::runtime_error( "unknown format context" );
53+
return 1.0 * (unsigned int)_formatContext->start_time / AV_TIME_BASE;
54+
}
55+
56+
double FileProperties::getDuration() const
57+
{
58+
if( ! _formatContext )
59+
throw std::runtime_error( "unknown format context" );
60+
return 1.0 * _formatContext->duration / AV_TIME_BASE;
61+
}
62+
63+
size_t FileProperties::getBitRate() const
64+
{
65+
if( ! _formatContext )
66+
throw std::runtime_error( "unknown format context" );
67+
return _formatContext->bit_rate;
68+
}
69+
70+
size_t FileProperties::getPacketSize() const
71+
{
72+
if( ! _formatContext )
73+
throw std::runtime_error( "unknown format context" );
74+
return _formatContext->packet_size;
75+
}
76+
77+
size_t FileProperties::getNbStreams() const
78+
{
79+
if( ! _formatContext )
80+
throw std::runtime_error( "unknown format context" );
81+
return _formatContext->nb_streams;
82+
}
1983

20-
MetadatasMap FileProperties::getDataMap() const
84+
PropertiesMap FileProperties::getPropertiesAsMap() const
2185
{
22-
MetadatasMap dataMap;
86+
PropertiesMap dataMap;
2387

2488
detail::add( dataMap, "filename", getFilename() );
2589
detail::add( dataMap, "formatName", getFormatName() );

src/AvTranscoder/mediaProperty/FileProperties.hpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@ class AvExport FileProperties
2525
public:
2626
FileProperties( const AVFormatContext* formatContext );
2727

28-
std::string getFilename() const { return _formatContext->filename; }
29-
std::string getFormatName() const { return _formatContext->iformat->name; }
30-
std::string getFormatLongName() const { return _formatContext->iformat->long_name; }
28+
std::string getFilename() const;
29+
std::string getFormatName() const;
30+
std::string getFormatLongName() const;
3131

32-
size_t getProgramsCount() const { return _formatContext->nb_programs; }
33-
double getStartTime() const { return 1.0 * (unsigned int)_formatContext->start_time / AV_TIME_BASE; }
34-
double getDuration() const { return 1.0 * _formatContext->duration / AV_TIME_BASE; }
35-
size_t getBitRate() const { return _formatContext->bit_rate; }
36-
size_t getPacketSize() const { return _formatContext->packet_size; }
32+
size_t getProgramsCount() const;
33+
double getStartTime() const;
34+
double getDuration() const;
35+
size_t getBitRate() const;
36+
size_t getPacketSize() const;
3737

38-
MetadatasMap& getMetadatas() { return _metadatas; }
38+
PropertiesMap& getMetadatas() { return _metadatas; }
3939

40-
size_t getNbStreams() const { return _formatContext->nb_streams; }
40+
size_t getNbStreams() const;
4141
size_t getNbVideoStreams() const { return _videoStreams.size(); }
4242
size_t getNbAudioStreams() const { return _audioStreams.size(); }
4343
size_t getNbDataStreams() const { return _dataStreams.size(); }
@@ -58,9 +58,11 @@ class AvExport FileProperties
5858
std::vector< avtranscoder::UnknownProperties >& getUnknownPropertiesProperties() { return _unknownStreams; }
5959
const std::vector< avtranscoder::UnknownProperties >& getUnknownPropertiesProperties() const { return _unknownStreams; }
6060

61+
#ifndef SWIG
6162
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
63+
#endif
6264

63-
MetadatasMap getDataMap() const;
65+
PropertiesMap getPropertiesAsMap() const; ///< Return all file properties as a map (name of property: value)
6466

6567
private:
6668
const AVFormatContext* _formatContext; ///< Has link (no ownership)
@@ -72,7 +74,7 @@ class AvExport FileProperties
7274
std::vector< AttachementProperties > _attachementStreams; ///< Array of properties per attachement stream
7375
std::vector< UnknownProperties > _unknownStreams; ///< Array of properties per unknown stream
7476

75-
MetadatasMap _metadatas;
77+
PropertiesMap _metadatas;
7678
};
7779

7880
}

src/AvTranscoder/mediaProperty/SubtitleProperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ SubtitleProperties::SubtitleProperties( const AVFormatContext* formatContext, co
1111
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1212
}
1313

14-
MetadatasMap SubtitleProperties::getDataMap() const
14+
PropertiesMap SubtitleProperties::getPropertiesAsMap() const
1515
{
16-
MetadatasMap dataMap;
16+
PropertiesMap dataMap;
1717

1818
detail::add( dataMap, "streamId", _streamId );
1919

src/AvTranscoder/mediaProperty/SubtitleProperties.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,19 @@ class AvExport SubtitleProperties
1717
SubtitleProperties( const AVFormatContext* formatContext, const size_t index );
1818

1919
size_t getStreamId() const { return _streamId; }
20-
MetadatasMap& getMetadatas() { return _metadatas; }
20+
PropertiesMap& getMetadatas() { return _metadatas; }
2121

22+
#ifndef SWIG
2223
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
24+
#endif
2325

24-
MetadatasMap getDataMap() const;
26+
PropertiesMap getPropertiesAsMap() const; ///< Return all subtitle properties as a map (name of property: value)
2527

2628
private:
2729
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2830

2931
size_t _streamId;
30-
MetadatasMap _metadatas;
32+
PropertiesMap _metadatas;
3133
};
3234

3335
}

src/AvTranscoder/mediaProperty/UnknownProperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ UnknownProperties::UnknownProperties( const AVFormatContext* formatContext, cons
1111
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1212
}
1313

14-
MetadatasMap UnknownProperties::getDataMap() const
14+
PropertiesMap UnknownProperties::getPropertiesAsMap() const
1515
{
16-
MetadatasMap dataMap;
16+
PropertiesMap dataMap;
1717

1818
detail::add( dataMap, "streamId", _streamId );
1919

src/AvTranscoder/mediaProperty/UnknownProperties.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,19 @@ class AvExport UnknownProperties
1717
UnknownProperties( const AVFormatContext* formatContext, const size_t index );
1818

1919
size_t getStreamId() const { return _streamId; }
20-
MetadatasMap& getMetadatas() { return _metadatas; }
20+
PropertiesMap& getMetadatas() { return _metadatas; }
2121

22+
#ifndef SWIG
2223
const AVFormatContext& getAVFormatContext() { return *_formatContext; }
24+
#endif
2325

24-
MetadatasMap getDataMap() const;
26+
PropertiesMap getPropertiesAsMap() const; ///< Return unknown properties as a map (name of property: value)
2527

2628
private:
2729
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2830

2931
size_t _streamId;
30-
MetadatasMap _metadatas;
32+
PropertiesMap _metadatas;
3133
};
3234

3335
}

0 commit comments

Comments
 (0)