Skip to content

Commit c8169ed

Browse files
author
Clement Champetier
committed
Manage duration as a float
Double type is not constructed the same way in C++ and Java, and does not exist in python. Our bindings of 'C++ double' could create issues, and since a fps with a simple precision is enough, we decided to return fps as float.
1 parent c619856 commit c8169ed

12 files changed

+26
-29
lines changed

src/AvTranscoder/mediaProperty/FileProperties.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ double FileProperties::getStartTime() const
157157
return 1.0 * (unsigned int)_avFormatContext->start_time / AV_TIME_BASE;
158158
}
159159

160-
double FileProperties::getDuration() const
160+
float FileProperties::getDuration() const
161161
{
162162
if( ! _avFormatContext )
163163
throw std::runtime_error( "unknown format context" );

src/AvTranscoder/mediaProperty/FileProperties.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class AvExport FileProperties
4444

4545
size_t getProgramsCount() const;
4646
double getStartTime() const;
47-
double getDuration() const; ///< in seconds
47+
float getDuration() const; ///< in seconds
4848
size_t getBitRate() const; ///< total stream bitrate in bit/s, 0 if not available (result of a computation by ffmpeg)
4949
size_t getPacketSize() const;
5050

src/AvTranscoder/mediaProperty/StreamProperties.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@ Rational StreamProperties::getTimeBase() const
3737
return timeBase;
3838
}
3939

40-
double StreamProperties::getDuration() const
40+
float StreamProperties::getDuration() const
4141
{
4242
Rational timeBase = getTimeBase();
43-
double duration = ( timeBase.num / (double) timeBase.den ) * _formatContext->streams[_streamIndex]->duration;
44-
return duration;
43+
return ( timeBase.num / (double) timeBase.den ) * _formatContext->streams[_streamIndex]->duration;
4544
}
4645

4746
PropertyVector StreamProperties::getPropertiesAsVector() const

src/AvTranscoder/mediaProperty/StreamProperties.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class AvExport StreamProperties
1818
size_t getStreamIndex() const { return _streamIndex; }
1919
size_t getStreamId() const;
2020
Rational getTimeBase() const;
21-
double getDuration() const; ///< in seconds
21+
float getDuration() const; ///< in seconds
2222
const PropertyVector& getMetadatas() const { return _metadatas; }
2323

2424
#ifndef SWIG

src/AvTranscoder/mediaProperty/VideoProperties.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,8 +523,8 @@ float VideoProperties::getFps() const
523523
const size_t nbFrames = getNbFrames();
524524
if( nbFrames )
525525
{
526-
double duration = getDuration();
527-
double epsilon = std::numeric_limits<double>::epsilon();
526+
const float duration = getDuration();
527+
const float epsilon = std::numeric_limits<float>::epsilon();
528528
if( duration > epsilon )
529529
return nbFrames / duration;
530530
}

src/AvTranscoder/stream/IInputStream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class AvExport IInputStream
2222
virtual bool readNextPacket( CodedData& data ) = 0;
2323

2424
virtual size_t getStreamIndex() const = 0;
25-
virtual double getDuration() const = 0;
25+
virtual float getDuration() const = 0;
2626
virtual AVMediaType getStreamType() const = 0;
2727

2828
//@{

src/AvTranscoder/stream/InputStream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ AVMediaType InputStream::getStreamType() const
111111
return _inputFile->getFormatContext().getAVStream( _streamIndex ).codec->codec_type;
112112
}
113113

114-
double InputStream::getDuration() const
114+
float InputStream::getDuration() const
115115
{
116116
return _inputFile->getProperties().getStreamPropertiesWithIndex( _streamIndex ).getDuration();
117117
}

src/AvTranscoder/stream/InputStream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class AvExport InputStream : public IInputStream
2626

2727
size_t getStreamIndex() const { return _streamIndex; }
2828
/// Get duration of the stream, in seconds
29-
double getDuration() const;
29+
float getDuration() const;
3030
AVMediaType getStreamType() const;
3131

3232
VideoCodec& getVideoCodec();

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,11 +482,11 @@ void StreamTranscoder::switchToInputDecoder()
482482
assert( _currentDecoder != NULL );
483483
}
484484

485-
double StreamTranscoder::getDuration() const
485+
float StreamTranscoder::getDuration() const
486486
{
487487
if( _inputStream )
488488
{
489-
double totalDuration = _inputStream->getDuration() + _offset;
489+
const float totalDuration = _inputStream->getDuration() + _offset;
490490
if( totalDuration < 0 )
491491
{
492492
LOG_WARN( "Offset of " << _offset << "s applied to a stream with a duration of " << _inputStream->getDuration() << "s. Set its duration to 0s." )
@@ -495,7 +495,7 @@ double StreamTranscoder::getDuration() const
495495
return totalDuration;
496496
}
497497
else
498-
return std::numeric_limits<double>::max();
498+
return std::numeric_limits<float>::max();
499499
}
500500

501501
StreamTranscoder::EProcessCase StreamTranscoder::getProcessCase() const

src/AvTranscoder/transcoder/StreamTranscoder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class AvExport StreamTranscoder
6868
* @note if it's a generated stream, return limit of double.
6969
* @note if offset > duration of the stream, return 0
7070
*/
71-
double getDuration() const;
71+
float getDuration() const;
7272

7373
/// Returns a reference to the current decoder (from input file or from generator)
7474
IDecoder& getCurrentDecoder() const { return *_currentDecoder; }

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy