Commit a0cac584 authored by Damien Lucas's avatar Damien Lucas

. Broke the dvb input in order to make it work with new driver

  and future libdvd

  Wait for my next commit to try anything, this one may not work.
parent 07fc0626
......@@ -87,6 +87,7 @@ MODULE_LCFLAGS = @MODULE_LCFLAGS@
DVDREADER_LIB = @DVDREADER_LIB@
DVBINPUT_LIB = @DVBINPUT_LIB@
BUILTINS_LIB = $(patsubst %,$$%_LIB,$(shell echo ${BUILTINS} | tr '[a-z]' '[A-Z]'))
VLS_LIB += $(BUILTINS_LIB)
......
......@@ -6668,23 +6668,23 @@ then
fi
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$save_CPPFLAGS $test_CFLAGS"
if test "${ac_cv_header_ost_sec_h+set}" = set; then
echo "$as_me:$LINENO: checking for ost/sec.h" >&5
echo $ECHO_N "checking for ost/sec.h... $ECHO_C" >&6
if test "${ac_cv_header_ost_sec_h+set}" = set; then
if test "${ac_cv_header_dvb_channel_h+set}" = set; then
echo "$as_me:$LINENO: checking for dvb/channel.h" >&5
echo $ECHO_N "checking for dvb/channel.h... $ECHO_C" >&6
if test "${ac_cv_header_dvb_channel_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: $ac_cv_header_ost_sec_h" >&5
echo "${ECHO_T}$ac_cv_header_ost_sec_h" >&6
echo "$as_me:$LINENO: result: $ac_cv_header_dvb_channel_h" >&5
echo "${ECHO_T}$ac_cv_header_dvb_channel_h" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking ost/sec.h usability" >&5
echo $ECHO_N "checking ost/sec.h usability... $ECHO_C" >&6
echo "$as_me:$LINENO: checking dvb/channel.h usability" >&5
echo $ECHO_N "checking dvb/channel.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
$ac_includes_default
#include <ost/sec.h>
#include <dvb/channel.h>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
......@@ -6709,12 +6709,12 @@ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present?
echo "$as_me:$LINENO: checking ost/sec.h presence" >&5
echo $ECHO_N "checking ost/sec.h presence... $ECHO_C" >&6
echo "$as_me:$LINENO: checking dvb/channel.h presence" >&5
echo $ECHO_N "checking dvb/channel.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#include <ost/sec.h>
#include <dvb/channel.h>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
......@@ -6746,50 +6746,53 @@ echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc in
yes:no )
{ echo "$as_me:$LINENO: WARNING: ost/sec.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: ost/sec.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: ost/sec.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: ost/sec.h: proceeding with the preprocessor's result" >&2;};;
{ echo "$as_me:$LINENO: WARNING: dvb/channel.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: dvb/channel.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: dvb/channel.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: dvb/channel.h: proceeding with the preprocessor's result" >&2;};;
no:yes )
{ echo "$as_me:$LINENO: WARNING: ost/sec.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: ost/sec.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: ost/sec.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: ost/sec.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: ost/sec.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: ost/sec.h: proceeding with the preprocessor's result" >&2;};;
{ echo "$as_me:$LINENO: WARNING: dvb/channel.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: dvb/channel.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: dvb/channel.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: dvb/channel.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: dvb/channel.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: dvb/channel.h: proceeding with the preprocessor's result" >&2;};;
esac
echo "$as_me:$LINENO: checking for ost/sec.h" >&5
echo $ECHO_N "checking for ost/sec.h... $ECHO_C" >&6
if test "${ac_cv_header_ost_sec_h+set}" = set; then
echo "$as_me:$LINENO: checking for dvb/channel.h" >&5
echo $ECHO_N "checking for dvb/channel.h... $ECHO_C" >&6
if test "${ac_cv_header_dvb_channel_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_ost_sec_h=$ac_header_preproc
ac_cv_header_dvb_channel_h=$ac_header_preproc
fi
echo "$as_me:$LINENO: result: $ac_cv_header_ost_sec_h" >&5
echo "${ECHO_T}$ac_cv_header_ost_sec_h" >&6
echo "$as_me:$LINENO: result: $ac_cv_header_dvb_channel_h" >&5
echo "${ECHO_T}$ac_cv_header_dvb_channel_h" >&6
fi
if test $ac_cv_header_ost_sec_h = yes; then
if test $ac_cv_header_dvb_channel_h = yes; then
HAVE_DVB_LIB=1
else
HAVE_DVB_LIB=0
fi
if test ${HAVE_DVB_LIB}=1
then
PLUGINS="${PLUGINS} dvbinput dvbreader"
DVBINPUT_LIB="${DVBINPUT_LIB} -ldvb"
if test x${with_dvb} != x
then
CCFLAGS="${CCFLAGS} -I${with_dvb}"
DCFLAGS="${DCFLAGS} -I${with_dvb}"
fi
NEEDSRC_mpegmux=1
else
{ { echo "$as_me:$LINENO: error: The development package for DVB is not installed.
else
{ { echo "$as_me:$LINENO: error: The development library package for DVB is not installed.
Please install it and try again" >&5
echo "$as_me: error: The development package for DVB is not installed.
echo "$as_me: error: The development library package for DVB is not installed.
Please install it and try again" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
CPPFLAGS=$save_CPPFLAGS
fi
......@@ -7081,7 +7084,7 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
VLS_LIB="${VLS_LIB} ${test_LDFLAGS} -ldvbpsi"
VLS_LIB="${VLS_LIB} -ldvbpsi"
CCFLAGS="${CCFLAGS} ${test_CFLAGS}"
DCFLAGS="${DCFLAGS} ${test_CFLAGS}"
......@@ -7118,6 +7121,7 @@ fi
......@@ -7734,6 +7738,7 @@ s,@DCFLAGS@,$DCFLAGS,;t t
s,@LCFLAGS@,$LCFLAGS,;t t
s,@MODULE_LCFLAGS@,$MODULE_LCFLAGS,;t t
s,@DVDREADER_LIB@,$DVDREADER_LIB,;t t
s,@DVBINPUT_LIB@,$DVBINPUT_LIB,;t t
s,@VLS_LCFLAGS@,$VLS_LCFLAGS,;t t
s,@VLS_LIB@,$VLS_LIB,;t t
CEOF
......
......@@ -316,18 +316,21 @@ then
fi
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$save_CPPFLAGS $test_CFLAGS"
AC_CHECK_HEADER([ost/sec.h],[
AC_CHECK_HEADER([dvb/channel.h],HAVE_DVB_LIB=1, HAVE_DVB_LIB=0)
if test ${HAVE_DVB_LIB}=1
then
PLUGINS="${PLUGINS} dvbinput dvbreader"
DVBINPUT_LIB="${DVBINPUT_LIB} -ldvb"
if test x${with_dvb} != x
then
CCFLAGS="${CCFLAGS} -I${with_dvb}"
DCFLAGS="${DCFLAGS} -I${with_dvb}"
fi
NEEDSRC_mpegmux=1
],[
AC_MSG_ERROR([The development package for DVB is not installed.
else
AC_MSG_ERROR([The development library package for DVB is not installed.
Please install it and try again])
])
fi
CPPFLAGS=$save_CPPFLAGS
fi
......@@ -387,7 +390,7 @@ then
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$save_CPPFLAGS $test_CFLAGS"
AC_CHECK_HEADERS([dvbpsi/dvbpsi.h],[
VLS_LIB="${VLS_LIB} ${test_LDFLAGS} -ldvbpsi"
VLS_LIB="${VLS_LIB} -ldvbpsi"
CCFLAGS="${CCFLAGS} ${test_CFLAGS}"
DCFLAGS="${DCFLAGS} ${test_CFLAGS}"
],[
......@@ -425,6 +428,7 @@ AC_SUBST(LCFLAGS)
AC_SUBST(MODULE_LCFLAGS)
AC_SUBST(DVDREADER_LIB)
AC_SUBST(DVBINPUT_LIB)
AC_SUBST(VLS_LCFLAGS)
AC_SUBST(VLS_LIB)
......
......@@ -2,7 +2,7 @@
* application.cpp: Application class
*-------------------------------------------------------------------------------
* (c)1999-2001 VideoLAN
* $Id: application.cpp,v 1.13 2002/11/05 19:54:07 nitrox Exp $
* $Id: application.cpp,v 1.14 2002/11/11 09:51:00 nitrox Exp $
*
* Authors: Benoit Steiner <benny@via.ecp.fr>
*
......@@ -55,7 +55,8 @@
" target:\n" \
" dvd:<device> for streaming of a dvd\n" \
" dvd:<dir> for streaming of a dvd stored on hard drive\n" \
" file:<file> for streaming of a file\n"
" file:<file> for streaming of a file\n" \
" dvb:<channel> for streaming of a dvb channel\n"
//------------------------------------------------------------------------------
// Preamble
......
......@@ -2,7 +2,7 @@
* parsers.cpp: Command line and configuration files parsers
*-------------------------------------------------------------------------------
* (c)1999-2001 VideoLAN
* $Id: parsers.cpp,v 1.6 2002/11/05 19:54:07 nitrox Exp $
* $Id: parsers.cpp,v 1.7 2002/11/11 09:51:00 nitrox Exp $
*
* Authors: Benoit Steiner <benny@via.ecp.fr>
* Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>
......@@ -284,7 +284,6 @@ void C_CfgFileParser::AddCmdLineSetting(unsigned char sOption, C_String sValue)
}
else if (sMeth=="file")
{
printf("**** method: file -- Filename: %s\n", sDest1.GetString());
if(sDest1=="") throw E_Parser(GEN_ERR, "No Filname specified");
m_pCallBack->OnStartSection("Channels");
m_pCallBack->OnProperty("output1", "file");
......@@ -329,8 +328,9 @@ void C_CfgFileParser::AddCmdLineSetting(unsigned char sOption, C_String sValue)
void C_CfgFileParser::AddCmdLineTarget(C_String sTarget, C_String sTags)
{
C_String sMeth;
C_String sFile;
C_String sMeth; /* First part of the tager definition */
C_String sFile; /* Second part of the target definition */
C_String sProgramLaunch; /* Name of the program to be launch at startup */
/* Target Parsing */
if(sTarget.Find(':', 1)!=GEN_ERR)
......@@ -355,6 +355,10 @@ void C_CfgFileParser::AddCmdLineTarget(C_String sTarget, C_String sTags)
{
m_pCallBack->OnProperty("input1", "local");
}
else if(sMeth=="dvb")
{
m_pCallBack->OnProperty("input1", "dvb");
}
m_pCallBack->OnEndSection("Inputs");
/* 1 Section */
......@@ -364,8 +368,16 @@ void C_CfgFileParser::AddCmdLineTarget(C_String sTarget, C_String sTags)
{
m_pCallBack->OnProperty("Device", sFile);
m_pCallBack->OnProperty("Type", "Dvd");
sProgramLaunch = "program1";
}
else if(sMeth == "dvb")
{
// TODO user may specify in target the device number
m_pCallBack->OnProperty("DeviceNumber", "0");
sProgramLaunch = sFile;
sProgramLaunch.Replace(' ', '_');
}
else if(sMeth== "file")
else if(sMeth == "file")
{
m_pCallBack->OnProperty("FileName", sFile);
C_File fFile = C_File(sFile);
......@@ -378,11 +390,13 @@ void C_CfgFileParser::AddCmdLineTarget(C_String sTarget, C_String sTags)
if(bFormat==0x01) m_pCallBack->OnProperty("Type", "MPEG1-PS");
else if(bFormat==0x04) m_pCallBack->OnProperty("Type", "MPEG2-PS");
fFile.Close();
sProgramLaunch = "program1";
}
m_pCallBack->OnEndSection("1");
/* Automatic start section */
m_pCallBack->OnStartSection("LaunchOnStartUp");
m_pCallBack->OnProperty("command1", "start program1 output1 input1 "+sTags);
m_pCallBack->OnProperty("command1", "start "+sProgramLaunch
+" output1 input1 "+sTags);
m_pCallBack->OnEndSection("LaunchOnStartUp");
}
......@@ -2,7 +2,7 @@
* string.cpp: Strings manipulation
*-------------------------------------------------------------------------------
* (c)1999-2001 VideoLAN
* $Id: string.cpp,v 1.3 2002/09/09 14:02:34 jpsaman Exp $
* $Id: string.cpp,v 1.4 2002/11/11 09:51:00 nitrox Exp $
*
* Authors: Benoit Steiner <benny@via.ecp.fr>
*
......@@ -583,7 +583,25 @@ int C_String::Find(char cChar, unsigned int iStart) const
return GEN_ERR;
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
// Replace all occurences of the char returns number of occurences
//------------------------------------------------------------------------------
int C_String::Replace(char cChar, char cChar2, unsigned int iStart)
{
int count=0;
for(unsigned int i = iStart; i < m_iLength; i++)
{
if(m_pszBuff[i] == cChar)
{
m_pszBuff[i] = cChar2;
count++;
}
}
return count;
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
......
......@@ -2,7 +2,7 @@
* string.h: String class definition
*-------------------------------------------------------------------------------
* (c)1999-2001 VideoLAN
* $Id: string.h,v 1.2 2002/03/24 18:54:10 asmax Exp $
* $Id: string.h,v 1.3 2002/11/11 09:51:00 nitrox Exp $
*
* Authors: Benoit Steiner <benny@via.ecp.fr>
*
......@@ -88,6 +88,7 @@ class C_String
// Substring lookup
int Find(char cChar, unsigned int iStart = 0) const;
int Replace(char cChar, char cChar2, unsigned int iStart = 0);
int Find(const C_String& strItem, unsigned int iStart = 0) const;
bool StartsWith(const C_String& strItem) const;
bool EndsWith(const C_String& strItem) const;
......
......@@ -2,7 +2,7 @@
# "dvb" input Makefile
#-------------------------------------------------------------------------------
# (c)1999-2002 VideoLAN
# $Id: Makefile,v 1.1 2002/03/21 14:09:19 bozo Exp $
# $Id: Makefile,v 1.2 2002/11/11 09:51:01 nitrox Exp $
################################################################################
......@@ -27,8 +27,9 @@ MODULE=dvbinput
#
# Source files
#
MODULE_SRC= dvbinput.cpp \
MODULE_SRC=dvbinput.cpp \
MODULE_LIB+=$(DVBINPUT_LIB)
################################################################################
# Makefile skeleton
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
* dvbinput.h: DVB Input class definition
*-------------------------------------------------------------------------------
* (c)1999-2002 VideoLAN
* $Id: dvbinput.h,v 1.9 2002/10/17 00:47:29 nitrox Exp $
* $Id: dvbinput.h,v 1.10 2002/11/11 09:51:01 nitrox Exp $
*
* Authors: Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>
*
......@@ -53,62 +53,27 @@ protected:
virtual void OnDeleteProgram(C_String strProgram);
virtual C_List<C_Program> OnGetAvailablePgrms();
// Hardware specific PID selection (demux)
virtual void OnSelectPid(u16 iPid, u8 iType);
virtual void OnUnselectPid(u16 iPid);
// The input is the event handler of its converter
virtual void HandleEvent(const C_Event& cEvent);
// PAT event handler
virtual void OnDvbPsiPatEvent(int iEvent);
// Hardware initialization
void SecControl();
void SetFrontend();
// Configuration
Modulation GetModulation(C_String);
BandWidth GetBandwidth (int);
CodeRate GetCodeRate (C_String);
GuardInterval GetGuardInterval(C_String);
TransmitMode GetTransmitMode(int);
Hierarchy GetHierarchy(int);
private:
// Config
C_String m_strDvbType;
C_String m_strDeviceType;
C_String m_strSec;
C_String m_strFrontend;
C_String m_strDemux;
C_String m_strDvr;
int m_iFrequency;
int m_iPolarization;
int m_iSymbolRate;
Modulation m_dModulation;
BandWidth m_dBandwidth;
CodeRate m_dFecInner;
CodeRate m_dCodeRateHP;
CodeRate m_dCodeRateLP;
TransmitMode m_dTransmitMode;
GuardInterval m_dGuardInterval;
Hierarchy m_dHierarchy;
int m_iDiSEqC;
int m_iLnbLof1;
int m_iLnbLof2;
int m_iLnbSLof;
int m_iSendMethod;
//Main structure
DVB *dvb;
C_String m_strDvr; /* Name of the DVR device */
int m_iNumber; /* Number of the device */
bool m_bHasDecoder; /* Device has hardware decoder ? */
// Kludge: signal the first PAT arrival.
C_Condition m_cEndInit;
int fd_demuxpat; /* File descriptor for the PAT demux filter */
int fd_demuxpmt; /* File descriptor for the PMT demux filter */
// Demuxes' file descriptors
int m_iDemuxes[512];
// Program Names
// The program Id is in m_vProgramNames.Find(strName) + 1
C_Vector<C_String> m_vProgramNames;
// Only one netlist for all the programs
C_NetList m_cTsProvider;
......
......@@ -2,7 +2,7 @@
* input.cpp: Input streams
*-------------------------------------------------------------------------------
* (c)1999-2001 VideoLAN
* $Id: input.cpp,v 1.9 2002/09/30 15:17:53 jpsaman Exp $
* $Id: input.cpp,v 1.10 2002/11/11 09:51:01 nitrox Exp $
*
* Authors: Benoit Steiner <benny@via.ecp.fr>
*
......@@ -152,6 +152,7 @@ void C_Input::Init()
}
catch(E_Exception e)
{
Log(m_hLog, LOG_ERROR, e.Dump());
Destroy();
throw E_Input(m_strName, "Unable to initialise input: aborting", e);
......@@ -221,6 +222,10 @@ C_Answer C_Input::StartStreaming(C_Broadcast* pBroadcast)
cAnswer.AddMessage("Unable to start program "+strPgrmName);
cAnswer.AddMessage(e.Dump());
// Just write to screen too
Log(m_hLog, LOG_ERROR, "Unable to start program "+strPgrmName);
Log(m_hLog, LOG_ERROR, e.Dump());
// Mark as free again
ASSERT(!m_bIsFree);
m_bIsFree = true;
......
......@@ -42,9 +42,9 @@ BEGIN "Inputs"
# --- Format:
# InputName = "Type"
# --- Example:
local1 = "local" # Local input example
# local1 = "local" # Local input example
# kfir = "video" # Video input example (mpeg encoder)
# dvb = "dvb" # Video input example (DVB card)
dvb = "dvb" # Video input example (DVB card)
END
# Video input configuration
......@@ -58,53 +58,9 @@ END
# Video input (DVB-S) configuration
BEGIN "dvb"
# --- Example:
# DvbType = "sat" # sat, cable or ter
# DeviceType = "nova" # nova for 'lowbudget cards' dvb-s for others
# DeviceNumber = "0" # /dev/ost/dvr<i>
# Frequency = "12553000" # Frequency in kHz of the transponder
# Polarization = "0" # 0(V) or 1(H)
# SymbolRate = "27500000" # Symbol rate
# DiSEqC = "0" # DiSEqC address of the used LNB
# LNB_Lof1 = "9750000" # Local frequency of lower LNB band
# LNB_Lof2 = "10600000" # Local frequency of upper LNB band
# LNB_SLof = "11700000" # Switch frequency of LNB
# FecInner = "AUTO"
# SendMethod = "0" # 0/1 - Send (All/only MPEG2) Pids
END
# Video input (DVB-C) configuration
BEGIN "dvb"
# --- Example:
# DvbType = "cable"
# DeviceNumber = "2" # /dev/ost/dvr<i>
# Frequency = "12553000" # Frequency in kHz of the transponder
# FecInner = "AUTO"
# Modulation = "QPSK" # QAM_8, QAM_16, ...
# SendMethod = "0" # 0/1 - Send (All/only MPEG2) Pids
END
# Video input (DVB-T) configuration
BEGIN "dvb"
# --- Example:
# DvbType = "ter"
# DeviceNumber = "3" # /dev/ost/dvr<i>
# Frequency = "12553000" # Frequency in kHz of the transponder
# CodeRateHP = "AUTO"
# CodeRateLP = "AUTO"
# TransmitMode = "2" # in K
# BandWidth = "6" # in MHz
# Hierarchy = "0"
# GuardInterval = "1/32"
# Modulation = "QPSK" # QAM_8, QAM_16, ...
# SendMethod = "0" # 0/1 - Send (All/only MPEG2) Pids
DeviceNumber = "0" # /dev/ost/dvr<i>
END
# Channel (outputs) declaration
BEGIN "Channels"
# --- Format:
......@@ -149,15 +105,28 @@ END
# Commands automatically lanched on Startup
# Commands shall be like they would be typed in a telnet console.
BEGIN "LaunchOnStartUp"
command1 = "start stream1 client1 local1 --loop"
command1 = "start MTVEurope client1 dvb"
END
# Main settings
BEGIN "Input"
ProgramCount = "3" # number of programs
FilesPath = "k:\vls"
ProgramCount = "1"
END
BEGIN "1"
Type = "Mpeg2-PS"
Name = "bryan"
FileName = "bryan.mpg"
END
#BEGIN "Input"
# ProgramCount = "3" # number of programs
#END
# --- Format:
# BEGIN "program_number"
# Name = "program_name"
......@@ -167,11 +136,11 @@ END
# END
# --- Example:
BEGIN "1" # MPEG2 stream stored in /mnt/video/stream1.ts
Name = "stream1"
FileName = "/mnt/video/Dolby_Canyon.mpeg"
Type = "Mpeg1-PS"
END
#BEGIN "1" # MPEG2 stream stored in /mnt/video/stream1.ts
# Name = "stream1"
# FileName = "/mnt/video/Dolby_Canyon.mpeg"
# Type = "Mpeg1-PS"
#END
BEGIN "2" # Dvd
Name = "film"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment