Skip to content

Commit 49874f5

Browse files
committed
TEST - DO NOT MERGE
Signed-off-by: ryadav698 <[email protected]>
1 parent 178c1fd commit 49874f5

File tree

3 files changed

+221
-247
lines changed

3 files changed

+221
-247
lines changed

test/gstTestHarness/rialto-api-test.cpp

Lines changed: 57 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ static const int64_t NS_SECOND = 1000000000LL;
1212

1313
static Mp4Demux trackAudio;
1414
static Mp4Demux trackVideo;
15-
static GstMediaPipeline *gstMediaPipeline;
15+
static std::shared_ptr<GstMediaPipeline> gstMediaPipeline;
1616
static int gUserPathLen;
1717
static const char *gUserPathPtr;
1818
static int32_t sourceIdAudio;
1919
static int32_t sourceIdVideo;
2020

21+
using namespace firebolt::rialto;
22+
2123
void LoadAndDemuxSegment(Mp4Demux &mp4Demux, const char *path)
2224
{
2325
char fullpath[512];
@@ -41,7 +43,7 @@ void LoadAndDemuxSegment(Mp4Demux &mp4Demux, const char *path)
4143
assert(n == len);
4244
if (n == len)
4345
{
44-
mp4Demux.Parse(ptr, len);
46+
mp4Demux.Parse(ptr, (uint32_t)len);
4547
}
4648
free(ptr);
4749
}
@@ -53,75 +55,43 @@ void LoadAndDemuxSegment(Mp4Demux &mp4Demux, const char *path)
5355
void ConfigureAudio()
5456
{
5557
LoadAndDemuxSegment(trackAudio, "audio/init-stream0.m4s");
58+
std::cout << "loading rialtotest /tmp/data/bipbop-gen/audio/init-stream0.m4s" << std::endl;
5659

57-
bool hasDrm = false;
58-
std::string mimeType;
59-
StreamFormat streamFormat;
60-
AudioConfig audioConfig;
61-
audioConfig.numberOfChannels = trackAudio.audio.channel_count;
62-
audioConfig.sampleRate = trackAudio.audio.samplerate;
63-
64-
switch (trackAudio.codec_type)
65-
{
66-
case MultiChar_Constant("esds"):
67-
mimeType = "audio/mpeg";
68-
streamFormat = StreamFormat::RAW;
69-
break;
70-
case MultiChar_Constant("dec3"):
71-
mimeType = "audio/x-eac3";
72-
streamFormat = StreamFormat::UNDEFINED;
73-
break;
74-
default:
75-
assert(0);
76-
}
77-
78-
std::unique_ptr<IMediaPipeline::MediaSource> sourceAudio =
79-
std::make_unique<IMediaPipeline::MediaSourceAudio>(
80-
mimeType, hasDrm, audioConfig, SegmentAlignment::UNDEFINED, streamFormat, nullptr);
60+
assert(trackAudio.tracks.size() == 1);
61+
assert(trackAudio.tracks[0].type == MediaSourceType::Audio);
8162

82-
bool okA = gstMediaPipeline->attachSource(sourceAudio);
83-
// assert(okA);
63+
std::unique_ptr<MediaSource> source =
64+
std::make_unique<MediaSourceAudio>(
65+
trackAudio.tracks[0].type,
66+
trackAudio.tracks[0].codec,
67+
trackAudio.tracks[0].mimeType,
68+
trackAudio.tracks[0].timeScale,
69+
trackAudio.tracks[0].initializationData);
8470

85-
sourceIdAudio = sourceAudio->getId();
71+
assert(gstMediaPipeline->attachSource(source));
72+
sourceIdAudio = source->getId();
8673
}
8774

8875
void ConfigureVideo()
8976
{
9077
LoadAndDemuxSegment(trackVideo, "video/init-stream0.m4s");
91-
92-
bool hasDrm = false;
93-
std::string mimeType;
94-
StreamFormat streamFormat;
95-
int32_t width = trackVideo.video.width;
96-
int32_t height = trackVideo.video.height;
97-
SegmentAlignment alignment = SegmentAlignment::AU;
98-
99-
switch (trackVideo.codec_type)
100-
{
101-
case MultiChar_Constant("hvcC"):
102-
mimeType = "video/x-h265";
103-
streamFormat = StreamFormat::HVC1;
104-
break;
105-
case MultiChar_Constant("avcC"):
106-
mimeType = "video/x-h264";
107-
streamFormat = StreamFormat::AVC;
108-
break;
109-
default:
110-
assert(0);
111-
}
112-
113-
CodecData codecData;
114-
const char *codec_ptr = trackVideo.codec_data.c_str();
115-
codecData.data = std::vector<uint8_t>(codec_ptr, &codec_ptr[trackVideo.codec_data.size()]);
116-
117-
std::unique_ptr<IMediaPipeline::MediaSource> sourceVideo =
118-
std::make_unique<IMediaPipeline::MediaSourceVideo>(
119-
mimeType, hasDrm, width, height, alignment, streamFormat, std::make_shared<CodecData>(codecData));
120-
121-
bool okV = gstMediaPipeline->attachSource(sourceVideo);
122-
// assert(okV);
123-
124-
sourceIdVideo = sourceVideo->getId();
78+
std::cout << "loading rialtotest /tmp/data/bipbop-gen/video/init-stream0.m4s" << std::endl;
79+
80+
assert(trackVideo.tracks.size() == 1);
81+
assert(trackVideo.tracks[0].type == MediaSourceType::Video);
82+
83+
std::unique_ptr<MediaSource> source =
84+
std::make_unique<MediaSourceVideo>(
85+
trackVideo.tracks[0].type,
86+
trackVideo.tracks[0].codec,
87+
trackVideo.tracks[0].mimeType,
88+
trackVideo.tracks[0].timeScale,
89+
trackVideo.tracks[0].initializationData,
90+
trackVideo.tracks[0].video.width,
91+
trackVideo.tracks[0].video.height);
92+
93+
assert(gstMediaPipeline->attachSource(source));
94+
sourceIdVideo = source->getId();
12595
}
12696

12797
void ConfigureComplete()
@@ -132,10 +102,10 @@ void ConfigureComplete()
132102
void InjectAudio()
133103
{
134104
LoadAndDemuxSegment(trackAudio, "audio/chunk-stream0-00001.m4s");
135-
int count = trackAudio.count();
136-
printf("adding %d audio frames\n", count);
105+
std::cout << "loading rialtotest /tmp/data/bipbop-gen/audio/chunk-stream0-00001.m4s" << std::endl;
106+
printf("adding %zu audio frames\n", trackAudio.getNbSegments());
137107

138-
for (int i = 0; i < count; i++)
108+
for (size_t i = 0; i < trackAudio.getNbSegments(); ++i)
139109
{
140110
double pts = trackAudio.getPts(i);
141111
double dur = trackAudio.getDuration(i);
@@ -144,9 +114,7 @@ void InjectAudio()
144114
std::make_unique<IMediaPipeline::MediaSegmentAudio>(
145115
sourceIdAudio,
146116
(int64_t)(pts * NS_SECOND),
147-
(int64_t)(dur * NS_SECOND),
148-
trackAudio.audio.samplerate,
149-
trackAudio.audio.channel_count);
117+
(int64_t)(dur * NS_SECOND));
150118

151119
size_t len = trackAudio.getLen(i);
152120
uint8_t *data = new uint8_t[len];
@@ -161,10 +129,10 @@ void InjectAudio()
161129
void InjectVideo()
162130
{
163131
LoadAndDemuxSegment(trackVideo, "video/chunk-stream0-00001.m4s");
164-
int count = trackVideo.count();
165-
printf("adding %d video frames\n", count);
132+
std::cout << "loading rialtotest /tmp/data/bipbop-gen/video/chunk-stream0-00001.m4s" << std::endl;
133+
printf("adding %zu video frames\n", trackVideo.getNbSegments());
166134

167-
for (int i = 0; i < count; i++)
135+
for (size_t i = 0; i < trackVideo.getNbSegments(); ++i)
168136
{
169137
double pts = trackVideo.getPts(i);
170138
double dur = trackVideo.getDuration(i);
@@ -174,8 +142,8 @@ void InjectVideo()
174142
sourceIdVideo,
175143
(int64_t)(pts * NS_SECOND),
176144
(int64_t)(dur * NS_SECOND),
177-
trackVideo.video.width,
178-
trackVideo.video.height);
145+
trackVideo.tracks[0].video.width,
146+
trackVideo.tracks[0].video.height);
179147

180148
size_t len = trackVideo.getLen(i);
181149
uint8_t *data = new uint8_t[len];
@@ -196,7 +164,18 @@ int my_main(int argc, char **argv)
196164
const char *delim = strchr(&gUserPathPtr[prefixLen], '/');
197165
gUserPathLen = (int)(delim - gUserPathPtr);
198166

199-
gstMediaPipeline = new GstMediaPipeline();
167+
gstMediaPipeline = std::make_shared<GstMediaPipeline>();
168+
if (!gstMediaPipeline->init())
169+
{
170+
fprintf(stderr, "FATAL: Failed to initialize Rialto pipeline. Check logs/server status.\n");
171+
return -1;
172+
}
173+
174+
if (!gstMediaPipeline->setVideoWindow(0, 0, 1920, 1080))
175+
{
176+
fprintf(stderr, "Warning: Failed to set video window. Video may not appear.\n");
177+
}
178+
200179
gstMediaPipeline->play();
201180

202181
ConfigureAudio();
@@ -206,7 +185,8 @@ int my_main(int argc, char **argv)
206185
InjectAudio();
207186
InjectVideo();
208187

209-
std::this_thread::sleep_for(std::chrono::seconds(2));
188+
gstMediaPipeline->stop();
189+
210190
return 0;
211191
}
212192

@@ -217,4 +197,4 @@ int main(int argc, char **argv)
217197
#else
218198
return my_main(argc, argv);
219199
#endif
220-
}
200+
}

0 commit comments

Comments
 (0)