util.cpp 1.83 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "util.h"

using namespace std;

namespace util {

unique_ptr<DecoderParameters> getDecoderParams(
    double seekFrameMargin,
    int64_t getPtsOnly,
    int64_t readVideoStream,
    int videoWidth,
    int videoHeight,
    int videoMinDimension,
    int64_t videoStartPts,
    int64_t videoEndPts,
    int videoTimeBaseNum,
    int videoTimeBaseDen,
    int64_t readAudioStream,
    int audioSamples,
    int audioChannels,
    int64_t audioStartPts,
    int64_t audioEndPts,
    int audioTimeBaseNum,
    int audioTimeBaseDen) {
  unique_ptr<DecoderParameters> params = make_unique<DecoderParameters>();

  if (readVideoStream == 1) {
    params->formats.emplace(
        MediaType::TYPE_VIDEO, MediaFormat(MediaType::TYPE_VIDEO));
    MediaFormat& videoFormat = params->formats[MediaType::TYPE_VIDEO];

    videoFormat.format.video.width = videoWidth;
    videoFormat.format.video.height = videoHeight;
    videoFormat.format.video.minDimension = videoMinDimension;
    videoFormat.format.video.startPts = videoStartPts;
    videoFormat.format.video.endPts = videoEndPts;
    videoFormat.format.video.timeBaseNum = videoTimeBaseNum;
    videoFormat.format.video.timeBaseDen = videoTimeBaseDen;
  }

  if (readAudioStream == 1) {
    params->formats.emplace(
        MediaType::TYPE_AUDIO, MediaFormat(MediaType::TYPE_AUDIO));
    MediaFormat& audioFormat = params->formats[MediaType::TYPE_AUDIO];

    audioFormat.format.audio.samples = audioSamples;
    audioFormat.format.audio.channels = audioChannels;
    audioFormat.format.audio.startPts = audioStartPts;
    audioFormat.format.audio.endPts = audioEndPts;
    audioFormat.format.audio.timeBaseNum = audioTimeBaseNum;
    audioFormat.format.audio.timeBaseDen = audioTimeBaseDen;
  }

  params->seekFrameMargin = seekFrameMargin;
  params->getPtsOnly = getPtsOnly;

  return params;
}

} // namespace util