Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ configure
depcomp
install-sh
missing
streamproxy.bb
build

8 changes: 4 additions & 4 deletions src/clientsocket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ ClientSocket::ClientSocket(int fd_in,
Service service(urlparams["service"]);

Util::vlog("ClientSocket: live streaming request");
(void)LiveStreaming(service, fd, streaming_parameters, config_map);
(void)LiveStreaming(service, fd, webauth, streaming_parameters, config_map);
Util::vlog("ClientSocket: live streaming ends");

return;
Expand All @@ -299,7 +299,7 @@ ClientSocket::ClientSocket(int fd_in,
case(stb_transcoding_broadcom):
{
Util::vlog("ClientSocket: transcoding service broadcom");
(void)LiveTranscodingBroadcom(service, fd, stb_traits, streaming_parameters, config_map);
(void)LiveTranscodingBroadcom(service, fd, webauth, stb_traits, streaming_parameters, config_map);
break;
}

Expand Down Expand Up @@ -444,7 +444,7 @@ ClientSocket::ClientSocket(int fd_in,
if(default_action == action_stream)
{
Util::vlog("ClientSocket: streaming service");
(void)LiveStreaming(service, fd, streaming_parameters, config_map);
(void)LiveStreaming(service, fd, webauth, streaming_parameters, config_map);
}
else
{
Expand All @@ -455,7 +455,7 @@ ClientSocket::ClientSocket(int fd_in,
case(stb_transcoding_broadcom):
{
Util::vlog("ClientSocket: transcoding service broadcom");
(void)LiveTranscodingBroadcom(service, fd, stb_traits, streaming_parameters, config_map);
(void)LiveTranscodingBroadcom(service, fd, webauth, stb_traits, streaming_parameters, config_map);
break;
}

Expand Down
8 changes: 7 additions & 1 deletion src/encoder-broadcom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ EncoderBroadcom::EncoderBroadcom(const PidMap &pids_in,
const stb_feature_t *feature = 0;
string value;
int int_value;
int pmt = -1, video = -1, audio = -1;
int pmt = -1, video = -1, audio = -1, default_audio_pid = -1;
int attempt;
int ioctl_set_pmtpid;
int ioctl_set_vpid;
Expand All @@ -44,6 +44,9 @@ EncoderBroadcom::EncoderBroadcom(const PidMap &pids_in,

for(PidMap::const_iterator it(pids_in.begin()); it != pids_in.end(); it++)
{
if (it->first == "default_audio_pid")
default_audio_pid = it->second;

if((it->first != "pat") && (it->first != "pmt") &&
(it->first != "audio") && (it->first != "video"))
continue;
Expand Down Expand Up @@ -71,6 +74,9 @@ EncoderBroadcom::EncoderBroadcom(const PidMap &pids_in,
pids[it->first] = it->second;
}

if (default_audio_pid != -1)
pids["audio"] = audio = default_audio_pid;

if((pmt == -1) || (video == -1) || (audio == -1))
throw(trap("EncoderBroadcom: missing pmt, video or audio pid"));

Expand Down
4 changes: 2 additions & 2 deletions src/livestreaming.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ using std::string;
#include <poll.h>
#include <time.h>

LiveStreaming::LiveStreaming(const Service &service, int socketfd,
LiveStreaming::LiveStreaming(const Service &service, int socketfd, string webauth,
const StreamingParameters &, const ConfigMap &config_map)
{
PidMap::const_iterator it;
Expand All @@ -40,7 +40,7 @@ LiveStreaming::LiveStreaming(const Service &service, int socketfd,
if(!service.is_valid())
throw(http_trap("LiveStreaming: invalid service", 404, "Not found, service not found"));

WebifRequest webifrequest(service, config_map);
WebifRequest webifrequest(service, webauth, config_map);

for(webifrequest_ok = false; (time(0) - timeout) < 60; )
{
Expand Down
2 changes: 1 addition & 1 deletion src/livestreaming.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class LiveStreaming

public:

LiveStreaming(const Service &service, int socketfd,
LiveStreaming(const Service &service, int socketfd, std::string webauth,
const StreamingParameters &streaming_parameters,
const ConfigMap &config_map);
};
Expand Down
4 changes: 2 additions & 2 deletions src/livetranscoding-broadcom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ using std::string;
#include <time.h>

LiveTranscodingBroadcom::LiveTranscodingBroadcom(const Service &service, int socketfd,
const stb_traits_t &stb_traits,
string webauth, const stb_traits_t &stb_traits,
const StreamingParameters &streaming_parameters,
const ConfigMap &config_map)
{
Expand Down Expand Up @@ -49,7 +49,7 @@ LiveTranscodingBroadcom::LiveTranscodingBroadcom(const Service &service, int soc
if(!service.is_valid())
throw(http_trap("LiveTranscodingBroadcom: invalid service", 404, "Not found, unknown service"));

WebifRequest webifrequest(service, config_map);
WebifRequest webifrequest(service, webauth, config_map);

for(webifrequest_ok = false; (time(0) - timeout) < 60; )
{
Expand Down
2 changes: 1 addition & 1 deletion src/livetranscoding-broadcom.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class LiveTranscodingBroadcom
public:

LiveTranscodingBroadcom(const Service &service, int socketfd,
const stb_traits_t &stb_traits,
std::string webauth, const stb_traits_t &stb_traits,
const StreamingParameters &streaming_parameters,
const ConfigMap &config_map);
};
Expand Down
12 changes: 6 additions & 6 deletions src/mpegts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -583,13 +583,13 @@ bool MpegTS::read_pmt(int filter_pid)
audio_pid = audioac3_pid = es_pid; // first AC3 Audio
audiolang_fallback = stream_language;
}
else
if (audio_pid == -1)
{
audio_pid = es_pid; // First Audio
audiolang_fallback = stream_language;
}
}
else
if (audio_pid == -1)
{
audio_pid = es_pid; // First Audio
audiolang_fallback = stream_language;
}
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions src/webifrequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ static const struct addrinfo gai_webif_hints =
.ai_next = 0,
};

WebifRequest::WebifRequest(const Service &service_in, const ConfigMap &config_map_in)
WebifRequest::WebifRequest(const Service &service_in,
string webauth, const ConfigMap &config_map_in)
:
service(service_in), config_map(config_map_in)
{
Expand Down Expand Up @@ -74,7 +75,12 @@ WebifRequest::WebifRequest(const Service &service_in, const ConfigMap &config_ma

freeaddrinfo(gai_webif_address);

request = string("GET /web/stream?StreamService=") + service.service_string() + " HTTP/1.0\r\n\r\n";
request = string("GET /web/stream?StreamService=") + service.service_string() + " HTTP/1.0\r\n";

if(webauth.length())
request += "Authorization: Basic " + webauth + "\r\n";

request += "\r\n";

Util::vlog("WebifRequest: send request to webif: \"%s\"", request.c_str());

Expand Down
3 changes: 2 additions & 1 deletion src/webifrequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class WebifRequest

public:

WebifRequest(const Service &service, const ConfigMap &config_map);
WebifRequest(const Service &service, std::string webauth,
const ConfigMap &config_map);
~WebifRequest();

void poll();
Expand Down