Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit105a32b

Browse files
authored
Merge pull request#328 from avTranscoder/fix/get_min_max_bit_rates_from_side_data
VideoProperties: extract min and max bitrate from side data
2 parents69e9bda +e6b0d05 commit105a32b

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

‎src/AvTranscoder/properties/StreamProperties.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ StreamProperties::StreamProperties(const FileProperties& fileProperties, const s
2828
throwstd::runtime_error(ss.str());
2929
}
3030

31-
_codec =avcodec_find_decoder(_formatContext->streams[_streamIndex]->codecpar->codec_id);
31+
AVStream* stream = _formatContext->streams[_streamIndex];
32+
_codec =avcodec_find_decoder(stream->codecpar->codec_id);
3233
_codecContext =avcodec_alloc_context3(_codec);
3334

34-
avcodec_parameters_to_context(_codecContext, _formatContext->streams[_streamIndex]->codecpar);
35+
avcodec_parameters_to_context(_codecContext, stream->codecpar);
36+
_codecContext->time_base = stream->time_base;
37+
_codecContext->coded_side_data = stream->side_data;
3538
}
3639

3740
// find the decoder

‎src/AvTranscoder/properties/VideoProperties.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,13 +371,29 @@ size_t VideoProperties::getMaxBitRate() const
371371
{
372372
if(!_codecContext)
373373
throwstd::runtime_error("unknown codec context");
374+
375+
if (_codecContext->rc_max_rate ==0
376+
&& _codecContext->coded_side_data
377+
&& _codecContext->coded_side_data->type == AV_PKT_DATA_CPB_PROPERTIES) {
378+
const AVCPBProperties* prop = (AVCPBProperties*) _codecContext->coded_side_data->data;
379+
return prop->max_bitrate;
380+
}
381+
374382
return _codecContext->rc_max_rate;
375383
}
376384

377385
size_tVideoProperties::getMinBitRate()const
378386
{
379387
if(!_codecContext)
380388
throwstd::runtime_error("unknown codec context");
389+
390+
if (_codecContext->rc_max_rate ==0
391+
&& _codecContext->coded_side_data
392+
&& _codecContext->coded_side_data->type == AV_PKT_DATA_CPB_PROPERTIES) {
393+
const AVCPBProperties* prop = (AVCPBProperties*) _codecContext->coded_side_data->data;
394+
return prop->min_bitrate;
395+
}
396+
381397
return _codecContext->rc_min_rate;
382398
}
383399

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp