gboolean
tl_hdhr_playback_manager_stream_channel_to_ip(TLHDHRPlaybackManager *self, guint32 frequency,
	guint32 program_id, uint32_t device_id, gchar *ip, guint port)
{
	gboolean succeeded;
	gchar *url;
	gchar *freq_str;
	gchar *pid_str;

	g_assert(self != NULL);
	g_assert(ip != NULL);

	succeeded = FALSE;
	if (self->priv->playback_device != NULL) {
		tl_hdhr_playback_manager_stop_streaming(self);
	}
	self->priv->playback_device = tl_hdhr_manager_get_tuner(TL_HDHR_MANAGER(self), device_id);
	if (self->priv->playback_device == NULL) {
		g_error("Could not acquire tuner.");
	} else {
		g_debug("Streaming using device %X and tuner %d", device_id,
			hdhomerun_device_get_tuner(self->priv->playback_device));
		freq_str = g_strdup_printf("%d", frequency);
		pid_str = g_strdup_printf("%d", program_id);
		url = g_strdup_printf("udp://%s:%d", ip, port);
		hdhomerun_device_set_tuner_channel(self->priv->playback_device, freq_str);
		hdhomerun_device_set_tuner_program(self->priv->playback_device, pid_str);
		succeeded = (gboolean) hdhomerun_device_set_tuner_target(self->priv->playback_device, url);
		g_free(freq_str);
		g_free(pid_str);
	}
	g_free(url);
	return succeeded;
}
Example #2
0
int HDHRDevice::setPIDFilterByProgram(unsigned short program )
{
	int result;
	char filterString[256] = "0x0000-0x1fff";	// default to send the raw DTV stream
	char programString[8] = "0";
	
	if(program == lastFilterProgram) return 0;
	lastFilterProgram = program;
	
	// DO NOT ENABLE IF WE'RE DATA SCANNING!
	if( !mScanning && mEnableFilter && program != 0 )
	{
		snprintf(programString, 8, "%d", program);
		result = hdhomerun_device_set_tuner_program(mDeviceConnection, programString);
	} else {
		// enable the full stream
		result = hdhomerun_device_set_tuner_filter(mDeviceConnection, "0x0000-0x1FFE"); // skip the 0x1fff pad packets
	}
	
	flog( "Native.log",  "HDHRDevice::setPIDFilter(program:%d) programString:\"%s\" filterString:\"%s\" scanning:%s filter_enabled:%s result:%d\r\n",
			          program, programString, filterString, mScanning ? "yes" : "no", mEnableFilter ? "yes" : "no", result);
	return result;
}