Skip to content

Commit 9ff9c91

Browse files
committed
Merge pull request #74 from cchampet/clean_transcoder
Clean Transcoder/StreamTranscoder
2 parents b3b4a5b + ed5d40b commit 9ff9c91

19 files changed

+158
-108
lines changed

src/AvTranscoder/file/FormatContext.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class AvExport FormatContext
5858
AVStream& addAVStream( const AVCodec& avCodec );
5959

6060
size_t getNbStreams() const { return _avFormatContext->nb_streams; }
61+
/// Get duration of the program, in seconds
6162
size_t getDuration() const { return _avFormatContext->duration; }
6263
size_t getStartTime() const { return _avFormatContext->start_time; }
6364

src/AvTranscoder/file/InputFile.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,43 +55,43 @@ void InputFile::analyse( IProgress& progress, const EAnalyseLevel level )
5555
if( level > eAnalyseLevelHeader )
5656
seekAtFrame( 0 );
5757

58-
for( size_t streamId = 0; streamId < _formatContext.getNbStreams(); streamId++ )
58+
for( size_t streamIndex = 0; streamIndex < _formatContext.getNbStreams(); streamIndex++ )
5959
{
60-
switch( _formatContext.getAVStream( streamId ).codec->codec_type )
60+
switch( _formatContext.getAVStream( streamIndex ).codec->codec_type )
6161
{
6262
case AVMEDIA_TYPE_VIDEO:
6363
{
64-
VideoProperties properties( _formatContext, streamId, progress, level );
64+
VideoProperties properties( _formatContext, streamIndex, progress, level );
6565
_properties.getVideoProperties().push_back( properties );
6666
break;
6767
}
6868
case AVMEDIA_TYPE_AUDIO:
6969
{
70-
AudioProperties properties( _formatContext, streamId );
70+
AudioProperties properties( _formatContext, streamIndex );
7171
_properties.getAudioProperties().push_back( properties );
7272
break;
7373
}
7474
case AVMEDIA_TYPE_DATA:
7575
{
76-
DataProperties properties( _formatContext, streamId );
76+
DataProperties properties( _formatContext, streamIndex );
7777
_properties.getDataProperties().push_back( properties );
7878
break;
7979
}
8080
case AVMEDIA_TYPE_SUBTITLE:
8181
{
82-
SubtitleProperties properties( _formatContext, streamId );
82+
SubtitleProperties properties( _formatContext, streamIndex );
8383
_properties.getSubtitleProperties().push_back( properties );
8484
break;
8585
}
8686
case AVMEDIA_TYPE_ATTACHMENT:
8787
{
88-
AttachementProperties properties( _formatContext, streamId );
88+
AttachementProperties properties( _formatContext, streamIndex );
8989
_properties.getAttachementProperties().push_back( properties );
9090
break;
9191
}
9292
case AVMEDIA_TYPE_UNKNOWN:
9393
{
94-
UnknownProperties properties( _formatContext, streamId );
94+
UnknownProperties properties( _formatContext, streamIndex );
9595
_properties.getUnknownPropertiesProperties().push_back( properties );
9696
break;
9797
}

src/AvTranscoder/mediaProperty/AttachementProperties.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
#include "AttachementProperties.hpp"
22

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

68
AttachementProperties::AttachementProperties( const FormatContext& formatContext, const size_t index )
79
: _formatContext( &formatContext.getAVFormatContext() )
8-
, _streamId( index )
10+
, _streamIndex( index )
911
{
1012
if( _formatContext )
1113
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1214
}
1315

16+
size_t AttachementProperties::getStreamId() const
17+
{
18+
if( ! _formatContext )
19+
throw std::runtime_error( "unknown format context" );
20+
return _formatContext->streams[_streamIndex]->id;
21+
}
22+
1423
PropertiesMap AttachementProperties::getPropertiesAsMap() const
1524
{
1625
PropertiesMap dataMap;
1726

18-
detail::add( dataMap, "streamId", _streamId );
27+
detail::add( dataMap, "streamId", getStreamId() );
1928

2029
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
2130
{

src/AvTranscoder/mediaProperty/AttachementProperties.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class AvExport AttachementProperties
1313
public:
1414
AttachementProperties( const FormatContext& formatContext, const size_t index );
1515

16-
size_t getStreamId() const { return _streamId; }
16+
size_t getStreamIndex() const { return _streamIndex; }
17+
size_t getStreamId() const;
1718
PropertiesMap& getMetadatas() { return _metadatas; }
1819

1920
#ifndef SWIG
@@ -25,7 +26,7 @@ class AvExport AttachementProperties
2526
private:
2627
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2728

28-
size_t _streamId;
29+
size_t _streamIndex;
2930
PropertiesMap _metadatas;
3031
};
3132

src/AvTranscoder/mediaProperty/AudioProperties.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ AudioProperties::AudioProperties( const FormatContext& formatContext, const size
1717
: _formatContext( &formatContext.getAVFormatContext() )
1818
, _codecContext( NULL )
1919
, _codec( NULL )
20-
, _streamId( index )
20+
, _streamIndex( index )
2121
{
2222
if( _formatContext )
2323
_codecContext = _formatContext->streams[index]->codec;
@@ -29,6 +29,13 @@ AudioProperties::AudioProperties( const FormatContext& formatContext, const size
2929
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
3030
}
3131

32+
size_t AudioProperties::getStreamId() const
33+
{
34+
if( ! _formatContext )
35+
throw std::runtime_error( "unknown format context" );
36+
return _formatContext->streams[_streamIndex]->id;
37+
}
38+
3239
std::string AudioProperties::getCodecName() const
3340
{
3441
if( _codec && _codec->name )
@@ -160,7 +167,7 @@ size_t AudioProperties::getNbSamples() const
160167
{
161168
if( ! _formatContext )
162169
throw std::runtime_error( "unknown format context" );
163-
return _formatContext->streams[_streamId]->nb_frames;
170+
return _formatContext->streams[_streamIndex]->nb_frames;
164171
}
165172

166173
size_t AudioProperties::getTicksPerFrame() const
@@ -176,8 +183,8 @@ Rational AudioProperties::getTimeBase() const
176183
throw std::runtime_error( "unknown format context" );
177184

178185
Rational timeBase = {
179-
_formatContext->streams[_streamId]->time_base.num,
180-
_formatContext->streams[_streamId]->time_base.den,
186+
_formatContext->streams[_streamIndex]->time_base.num,
187+
_formatContext->streams[_streamIndex]->time_base.den,
181188
};
182189
return timeBase;
183190
}
@@ -194,7 +201,7 @@ double AudioProperties::getFps() const
194201
double AudioProperties::getDuration() const
195202
{
196203
Rational timeBase = getTimeBase();
197-
double duration = ( timeBase.num / (double) timeBase.den ) * _formatContext->streams[_streamId]->duration;
204+
double duration = ( timeBase.num / (double) timeBase.den ) * _formatContext->streams[_streamIndex]->duration;
198205
return duration;
199206
}
200207

src/AvTranscoder/mediaProperty/AudioProperties.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class AvExport AudioProperties
2525
std::string getChannelName() const;
2626
std::string getChannelDescription() const;
2727

28-
size_t getStreamId() const { return _streamId; }
28+
size_t getStreamIndex() const { return _streamIndex; }
29+
size_t getStreamId() const;
2930
size_t getCodecId() const;
3031
size_t getSampleRate() const;
3132
size_t getChannels() const;
@@ -51,7 +52,7 @@ class AvExport AudioProperties
5152
AVCodecContext* _codecContext; ///< Has link (no ownership)
5253
AVCodec* _codec; ///< Has link (no ownership)
5354

54-
size_t _streamId;
55+
size_t _streamIndex;
5556
PropertiesMap _metadatas;
5657
};
5758

src/AvTranscoder/mediaProperty/DataProperties.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,33 @@ extern "C" {
88

99
#include <bitset>
1010
#include <iostream>
11+
#include <stdexcept>
1112

1213
namespace avtranscoder
1314
{
1415

1516
DataProperties::DataProperties( const FormatContext& formatContext, const size_t index )
1617
: _formatContext( &formatContext.getAVFormatContext() )
17-
, _streamId( index )
18+
, _streamIndex( index )
1819
{
19-
//detectAncillaryData( _formatContext, _streamId );
20+
//detectAncillaryData( _formatContext, _streamIndex );
2021

2122
if( _formatContext )
2223
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
2324
}
2425

26+
size_t DataProperties::getStreamId() const
27+
{
28+
if( ! _formatContext )
29+
throw std::runtime_error( "unknown format context" );
30+
return _formatContext->streams[_streamIndex]->id;
31+
}
32+
2533
PropertiesMap DataProperties::getPropertiesAsMap() const
2634
{
2735
PropertiesMap dataMap;
2836

29-
detail::add( dataMap, "streamId", _streamId );
37+
detail::add( dataMap, "streamId", getStreamId() );
3038

3139
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
3240
{
@@ -45,7 +53,7 @@ void DataProperties::detectAncillaryData()
4553

4654
while( ! av_read_frame( const_cast<AVFormatContext*>( _formatContext ), &pkt ) )
4755
{
48-
if( pkt.stream_index == (int)_streamId )
56+
if( pkt.stream_index == (int)_streamIndex )
4957
{
5058
std::cout << "start detect packet" << std::endl;
5159
size_t offset = 0;

src/AvTranscoder/mediaProperty/DataProperties.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class AvExport DataProperties
1313
public:
1414
DataProperties( const FormatContext& formatContext, const size_t index );
1515

16-
size_t getStreamId() const { return _streamId; }
16+
size_t getStreamIndex() const { return _streamIndex; }
17+
size_t getStreamId() const;
1718
PropertiesMap& getMetadatas() { return _metadatas; }
1819

1920
#ifndef SWIG
@@ -28,7 +29,7 @@ class AvExport DataProperties
2829
private:
2930
const AVFormatContext* _formatContext; ///< Has link (no ownership)
3031

31-
size_t _streamId;
32+
size_t _streamIndex;
3233
PropertiesMap _metadatas;
3334
};
3435

src/AvTranscoder/mediaProperty/SubtitleProperties.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
#include "SubtitleProperties.hpp"
22

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

68
SubtitleProperties::SubtitleProperties( const FormatContext& formatContext, const size_t index )
79
: _formatContext( &formatContext.getAVFormatContext() )
8-
, _streamId( index )
10+
, _streamIndex( index )
911
{
1012
if( _formatContext )
1113
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1214
}
1315

16+
size_t SubtitleProperties::getStreamId() const
17+
{
18+
if( ! _formatContext )
19+
throw std::runtime_error( "unknown format context" );
20+
return _formatContext->streams[_streamIndex]->id;
21+
}
22+
1423
PropertiesMap SubtitleProperties::getPropertiesAsMap() const
1524
{
1625
PropertiesMap dataMap;
1726

18-
detail::add( dataMap, "streamId", _streamId );
27+
detail::add( dataMap, "streamId", getStreamId() );
1928

2029
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
2130
{

src/AvTranscoder/mediaProperty/SubtitleProperties.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class AvExport SubtitleProperties
1313
public:
1414
SubtitleProperties( const FormatContext& formatContext, const size_t index );
1515

16-
size_t getStreamId() const { return _streamId; }
16+
size_t getStreamIndex() const { return _streamIndex; }
17+
size_t getStreamId() const;
1718
PropertiesMap& getMetadatas() { return _metadatas; }
1819

1920
#ifndef SWIG
@@ -25,7 +26,7 @@ class AvExport SubtitleProperties
2526
private:
2627
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2728

28-
size_t _streamId;
29+
size_t _streamIndex;
2930
PropertiesMap _metadatas;
3031
};
3132

src/AvTranscoder/mediaProperty/UnknownProperties.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
#include "UnknownProperties.hpp"
22

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

68
UnknownProperties::UnknownProperties( const FormatContext& formatContext, const size_t index )
79
: _formatContext( &formatContext.getAVFormatContext() )
8-
, _streamId( index )
10+
, _streamIndex( index )
911
{
1012
if( _formatContext )
1113
detail::fillMetadataDictionnary( _formatContext->streams[index]->metadata, _metadatas );
1214
}
1315

16+
size_t UnknownProperties::getStreamId() const
17+
{
18+
if( ! _formatContext )
19+
throw std::runtime_error( "unknown format context" );
20+
return _formatContext->streams[_streamIndex]->id;
21+
}
22+
1423
PropertiesMap UnknownProperties::getPropertiesAsMap() const
1524
{
1625
PropertiesMap dataMap;
1726

18-
detail::add( dataMap, "streamId", _streamId );
27+
detail::add( dataMap, "streamId", getStreamId() );
1928

2029
for( size_t metadataIndex = 0; metadataIndex < _metadatas.size(); ++metadataIndex )
2130
{

src/AvTranscoder/mediaProperty/UnknownProperties.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class AvExport UnknownProperties
1313
public:
1414
UnknownProperties( const FormatContext& formatContext, const size_t index );
1515

16-
size_t getStreamId() const { return _streamId; }
16+
size_t getStreamIndex() const { return _streamIndex; }
17+
size_t getStreamId() const;
1718
PropertiesMap& getMetadatas() { return _metadatas; }
1819

1920
#ifndef SWIG
@@ -25,7 +26,7 @@ class AvExport UnknownProperties
2526
private:
2627
const AVFormatContext* _formatContext; ///< Has link (no ownership)
2728

28-
size_t _streamId;
29+
size_t _streamIndex;
2930
PropertiesMap _metadatas;
3031
};
3132

0 commit comments

Comments
 (0)