kopia lustrzana https://github.com/F5OEO/tstools
Build man pages
And add install targets for them Also fix a few small documentation issues in the sourcemaster
rodzic
beb9855a81
commit
f1d24ff47e
103
Makefile
103
Makefile
|
@ -39,10 +39,14 @@ prefix=/usr/local
|
||||||
exec_prefix=$(prefix)
|
exec_prefix=$(prefix)
|
||||||
bindir=$(exec_prefix)/bin
|
bindir=$(exec_prefix)/bin
|
||||||
libdir=$(exec_prefix)/lib
|
libdir=$(exec_prefix)/lib
|
||||||
|
mandir=/usr/local/man
|
||||||
|
man1dir=$(mandir)/man1
|
||||||
|
manext=.1
|
||||||
|
|
||||||
INSTALL=install
|
INSTALL=install
|
||||||
INSTALL_PROGRAM=$(INSTALL) -m 0555 -s
|
INSTALL_PROGRAM=$(INSTALL) -m 0555 -s
|
||||||
INSTALL_LIB=$(INSTALL) -m 0444 -s
|
INSTALL_LIB=$(INSTALL) -m 0444 -s
|
||||||
|
INSTALL_DATA=$(INSTALL) -m 0444
|
||||||
|
|
||||||
|
|
||||||
ifdef CROSS_COMPILE
|
ifdef CROSS_COMPILE
|
||||||
|
@ -101,6 +105,7 @@ LDFLAGS = -g $(PROFILE_FLAGS) $(ARCH_FLAGS) -lm
|
||||||
OBJDIR = obj
|
OBJDIR = obj
|
||||||
LIBDIR = lib
|
LIBDIR = lib
|
||||||
BINDIR = bin
|
BINDIR = bin
|
||||||
|
MANDIR = docs/mdoc
|
||||||
|
|
||||||
# All of our non-program object modules
|
# All of our non-program object modules
|
||||||
OBJS = \
|
OBJS = \
|
||||||
|
@ -167,10 +172,12 @@ STATIC_LIB = $(LIBDIR)/libtstools.a
|
||||||
LIBOPTS = $(ARCH_FLAGS) $(STATIC_LIB)
|
LIBOPTS = $(ARCH_FLAGS) $(STATIC_LIB)
|
||||||
|
|
||||||
ifeq ($(shell uname -s), Darwin)
|
ifeq ($(shell uname -s), Darwin)
|
||||||
SHARED_LIB = $(LIBDIR)/libtstools.xxx
|
SHARED_LIB_NAME = libtstools.xxx
|
||||||
else
|
else
|
||||||
SHARED_LIB = $(LIBDIR)/libtstools.so
|
SHARED_LIB_NAME = libtstools.so
|
||||||
endif
|
endif
|
||||||
|
SHARED_LIB = $(LIBDIR)/$(SHARED_LIB_NAME)
|
||||||
|
|
||||||
# All of our programs (except the testing ones)
|
# All of our programs (except the testing ones)
|
||||||
PROGS = \
|
PROGS = \
|
||||||
$(BINDIR)/esfilter \
|
$(BINDIR)/esfilter \
|
||||||
|
@ -207,7 +214,6 @@ TEST_PROGS = test_nal_unit_list test_es_unit_list
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
all: $(BINDIR) $(LIBDIR) $(OBJDIR) $(PROGS) $(SHARED_LIB)
|
all: $(BINDIR) $(LIBDIR) $(OBJDIR) $(PROGS) $(SHARED_LIB)
|
||||||
echo "BINDIR=$(BINDIR), bindir=$(bindir)"
|
|
||||||
|
|
||||||
# ts2ps is not yet an offical program, so for the moment build
|
# ts2ps is not yet an offical program, so for the moment build
|
||||||
# it separately
|
# it separately
|
||||||
|
@ -404,13 +410,61 @@ $(OBJDIR)/test_es_unit_list.o: test_es_unit_list.c $(ES_H) version.h
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Directory creation
|
# Directory creation
|
||||||
|
|
||||||
$(OBJDIR) $(LIBDIR) $(BINDIR) $(DESTDIR)$(bindir) $(DESTDIR)$(libdir):
|
$(OBJDIR) $(LIBDIR) $(BINDIR) $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(man1dir):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install-man
|
||||||
install: all $(DESTDIR)$(bindir) $(DESTDIR)$(libdir)
|
install-man: $(DESTDIR)$(man1dir)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/esfilter.1 $(DESTDIR)$(man1dir)/esfilter$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/ts2es.1 $(DESTDIR)$(man1dir)/ts2es$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/es2ts.1 $(DESTDIR)$(man1dir)/es2ts$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/esdots.1 $(DESTDIR)$(man1dir)/esdots$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/esmerge.1 $(DESTDIR)$(man1dir)/esmerge$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/esreport.1 $(DESTDIR)$(man1dir)/esreport$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/esreverse.1 $(DESTDIR)$(man1dir)/esreverse$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/stream_type.1 $(DESTDIR)$(man1dir)/stream_type$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/psreport.1 $(DESTDIR)$(man1dir)/psreport$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/psdots.1 $(DESTDIR)$(man1dir)/psdots$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/ps2ts.1 $(DESTDIR)$(man1dir)/ps2ts$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsinfo.1 $(DESTDIR)$(man1dir)/tsinfo$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsreport.1 $(DESTDIR)$(man1dir)/tsreport$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsserve.1 $(DESTDIR)$(man1dir)/tsserve$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsplay.1 $(DESTDIR)$(man1dir)/tsplay$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/ts_packet_insert.1 $(DESTDIR)$(man1dir)/ts_packet_insert$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/m2ts2ts.1 $(DESTDIR)$(man1dir)/m2ts2ts$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/pcapreport.1 $(DESTDIR)$(man1dir)/pcapreport$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsfilter.1 $(DESTDIR)$(man1dir)/tsfilter$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/tsdvbsub.1 $(DESTDIR)$(man1dir)/tsdvbsub$(manext)
|
||||||
|
$(INSTALL_DATA) $(MANDIR)/rtp2264.1 $(DESTDIR)$(man1dir)/rtp2264$(manext)
|
||||||
|
|
||||||
|
.PHONY: uninstall-man
|
||||||
|
uninstall-man:
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/esfilter$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/ts2es$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/es2ts$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/esdots$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/esmerge$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/esreport$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/esreverse$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/stream_type$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/psreport$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/psdots$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/ps2ts$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsinfo$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsreport$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsserve$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsplay$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/ts_packet_insert$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/m2ts2ts$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/pcapreport$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsfilter$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/tsdvbsub$(manext)
|
||||||
|
rm -f $(DESTDIR)$(man1dir)/rtp2264$(manext)
|
||||||
|
|
||||||
|
.PHONY: install-prog
|
||||||
|
install-prog: all $(DESTDIR)$(bindir) $(DESTDIR)$(libdir)
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/esfilter $(DESTDIR)$(bindir)/esfilter
|
$(INSTALL_PROGRAM) $(BINDIR)/esfilter $(DESTDIR)$(bindir)/esfilter
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/ts2es $(DESTDIR)$(bindir)/ts2es
|
$(INSTALL_PROGRAM) $(BINDIR)/ts2es $(DESTDIR)$(bindir)/ts2es
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/es2ts $(DESTDIR)$(bindir)/es2ts
|
$(INSTALL_PROGRAM) $(BINDIR)/es2ts $(DESTDIR)$(bindir)/es2ts
|
||||||
|
@ -432,7 +486,38 @@ install: all $(DESTDIR)$(bindir) $(DESTDIR)$(libdir)
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/tsfilter $(DESTDIR)$(bindir)/tsfilter
|
$(INSTALL_PROGRAM) $(BINDIR)/tsfilter $(DESTDIR)$(bindir)/tsfilter
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/tsdvbsub $(DESTDIR)$(bindir)/tsdvbsub
|
$(INSTALL_PROGRAM) $(BINDIR)/tsdvbsub $(DESTDIR)$(bindir)/tsdvbsub
|
||||||
$(INSTALL_PROGRAM) $(BINDIR)/rtp2264 $(DESTDIR)$(bindir)/rtp2264
|
$(INSTALL_PROGRAM) $(BINDIR)/rtp2264 $(DESTDIR)$(bindir)/rtp2264
|
||||||
$(INSTALL_LIB) $(SHARED_LIB) $(DESTDIR)$(libdir)
|
$(INSTALL_LIB) $(SHARED_LIB) $(DESTDIR)$(libdir)/$(SHARED_LIB_NAME)
|
||||||
|
|
||||||
|
.PHONY: uninstall-prog
|
||||||
|
uninstall-prog:
|
||||||
|
rm -f $(DESTDIR)$(bindir)/esfilter
|
||||||
|
rm -f $(DESTDIR)$(bindir)/ts2es
|
||||||
|
rm -f $(DESTDIR)$(bindir)/es2ts
|
||||||
|
rm -f $(DESTDIR)$(bindir)/esdots
|
||||||
|
rm -f $(DESTDIR)$(bindir)/esmerge
|
||||||
|
rm -f $(DESTDIR)$(bindir)/esreport
|
||||||
|
rm -f $(DESTDIR)$(bindir)/esreverse
|
||||||
|
rm -f $(DESTDIR)$(bindir)/stream_type
|
||||||
|
rm -f $(DESTDIR)$(bindir)/psreport
|
||||||
|
rm -f $(DESTDIR)$(bindir)/psdots
|
||||||
|
rm -f $(DESTDIR)$(bindir)/ps2ts
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsinfo
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsreport
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsserve
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsplay
|
||||||
|
rm -f $(DESTDIR)$(bindir)/ts_packet_insert
|
||||||
|
rm -f $(DESTDIR)$(bindir)/m2ts2ts
|
||||||
|
rm -f $(DESTDIR)$(bindir)/pcapreport
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsfilter
|
||||||
|
rm -f $(DESTDIR)$(bindir)/tsdvbsub
|
||||||
|
rm -f $(DESTDIR)$(bindir)/rtp2264
|
||||||
|
rm -f $(DESTDIR)$(libdir)/$(SHARED_LIB_NAME)
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
install: install-man install-prog
|
||||||
|
|
||||||
|
.PHONY: uninstall
|
||||||
|
uninstall: uninstall-man uninstall-prog
|
||||||
|
|
||||||
.PHONY: objclean
|
.PHONY: objclean
|
||||||
objclean:
|
objclean:
|
||||||
|
@ -457,9 +542,7 @@ clean: objclean
|
||||||
|
|
||||||
.PHONY: distclean
|
.PHONY: distclean
|
||||||
distclean: clean
|
distclean: clean
|
||||||
-rmdir $(OBJDIR)
|
-rm -rf $(OBJDIR) $(LIBDIR) $(BINDIR)
|
||||||
-rmdir $(LIBDIR)
|
|
||||||
-rmdir $(BINDIR)
|
|
||||||
|
|
||||||
TESTDATAFILE = /data/video/CVBt_hp_trail.264
|
TESTDATAFILE = /data/video/CVBt_hp_trail.264
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ES2TS 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm es2ts
|
||||||
|
.Nd Convert an ES video stream to H.222 TS
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm es2ts
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl pid Ar pid_no
|
||||||
|
.Op Fl pmt Ar pmt_pid_no
|
||||||
|
.Op Fl host Ar host Ns Op : Ns Ar port
|
||||||
|
.Op Fl max Ar max_units | Fl m Ar max_units
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar out_file | Op Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Convert an elementary video stream to H.222 transport stream.
|
||||||
|
Supports input streams conforming to MPEG-2 (H.262), MPEG-4/AVC
|
||||||
|
(H.264) and AVS. Also supports MPEG-1 input streams, insofar as MPEG-2
|
||||||
|
is backwards compatible with MPEG-1.
|
||||||
|
.Pp
|
||||||
|
Note that this program works by reading and packaging the elementary
|
||||||
|
stream packages directly - it does not parse them as H.262 or H.264
|
||||||
|
data.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is a file containing the Elementary Stream data (but see -stdin below)
|
||||||
|
.It Ar out_file
|
||||||
|
is an H.222 Transport Stream file (but see -stdout and -host below)
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output summary information about each ES packet as it is read
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl pid Ar pid_no
|
||||||
|
.Ar pid_no
|
||||||
|
is the video PID to use for the data.
|
||||||
|
Use '-pid 0x<pid>' to specify a hex value.
|
||||||
|
.Bq default = 0x68
|
||||||
|
.It Fl pmt Ar pmt_pid_no
|
||||||
|
.Ar pmt_pid_no
|
||||||
|
is the PMT PID to use.
|
||||||
|
Use '-pmt 0x<pid>' to specify a hex value.
|
||||||
|
.Bq default = 0x66
|
||||||
|
.It Fl max Ar max_units , Fl m Ar max_units
|
||||||
|
Maximum number of ES data units to read
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl stdout
|
||||||
|
Write output to <stdout>, instead of a named file
|
||||||
|
Forces -quiet and -err stderr.
|
||||||
|
.It Fl host Ar host Ns Op : Ns Ar port
|
||||||
|
Writes output (over TCP/IP) to the named
|
||||||
|
.Ar host ,
|
||||||
|
instead of to a named file. If
|
||||||
|
.Ar port
|
||||||
|
is not specified, it defaults to 88.
|
||||||
|
.El
|
||||||
|
.Ss Stream type
|
||||||
|
When the TS data is being output, it is flagged to indicate whether
|
||||||
|
it conforms to H.262, H.264 or AVS. It is important to get this right,
|
||||||
|
as it will affect interpretation of the TS data.
|
||||||
|
.Pp
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264, H.262 or AVS. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Pp
|
||||||
|
If input is from standard input (via -stdin), then it is not possible
|
||||||
|
for the program to make its own decision on the input stream type.
|
||||||
|
Instead, it defaults to H.262, and relies on the user indicating if
|
||||||
|
this is wrong.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.It Fl avs
|
||||||
|
Force the program to treat the input as AVS.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.Sh BUGS
|
||||||
|
For the moment, the video input must be H.264 or AVS, and the audio input
|
||||||
|
ADTS, AC-3 ATSC or MPEG layer 2. Also, the audio is assumed to have a
|
||||||
|
constant number of samples per frame.
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ESDOTS 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm esdots
|
||||||
|
.Nd Present the content of an ES as a sequence of characters
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm esdots
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl max Ar max_units | Fl m Ar max_units
|
||||||
|
.Op Fl pes | ts
|
||||||
|
.Op Fl hasheos
|
||||||
|
.Op Fl es
|
||||||
|
.Op Fl gop
|
||||||
|
.Op Fl fr Ar frame_rate
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Present the content of an H.264 (MPEG-4/AVC), H.262 (MPEG-2) or AVS
|
||||||
|
elementary stream as a sequence of characters, representing access
|
||||||
|
units/MPEG-2 items/AVS items.
|
||||||
|
.Pp
|
||||||
|
(Note that for H.264 it is access units and not frames that are
|
||||||
|
represented, and for H.262 it is items and not pictures.)
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is an H.222 Transport Stream file (but see
|
||||||
|
.Fl stdin Ns )
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl max Ar max_units , Fl m Ar max_units
|
||||||
|
Maximum number of entities to read
|
||||||
|
.It Fl pes , ts
|
||||||
|
The input file is TS or PS, to be read via the
|
||||||
|
PES->ES reading mechanisms
|
||||||
|
.It Fl hasheos
|
||||||
|
Print a # on finding an EOS (end-of-stream) NAL unit
|
||||||
|
rather than stopping (only applies to H.264)
|
||||||
|
.It Fl es
|
||||||
|
Report ES units, rather than any 'higher' unit
|
||||||
|
(not necessarily suppported for all file types)
|
||||||
|
.It Fl gop
|
||||||
|
Show the duration of each GOP (for MPEG-2 steams)
|
||||||
|
OR the distance between random access points (H.264)
|
||||||
|
.It Fl fr
|
||||||
|
Set the video frame rate (default = 25 fps)
|
||||||
|
.El
|
||||||
|
.Ss Stream type:
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264 or H.262 data. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Pp
|
||||||
|
For AVS data, the program will never guess correctly, so the user must
|
||||||
|
specify the file type, using -avs.
|
||||||
|
.Pp
|
||||||
|
If input is from standard input (via -stdin), then it is not possible
|
||||||
|
for the program to make its own decision on the input stream type.
|
||||||
|
Instead, it defaults to H.262, and relies on the user indicating if
|
||||||
|
this is wrong.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.It Fl avs
|
||||||
|
Force the program to treat the input as AVS.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
|
@ -0,0 +1,149 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ESFILTER 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm esfilter
|
||||||
|
.Nd Output a filtered or truncated version of an elementary stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm esfilter
|
||||||
|
.Fl copy | filter | strip
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl host Ar dest_ip Ns Op : Ns Ar port
|
||||||
|
.Op Fl max Ar max_frames | Fl m Ar max_frames
|
||||||
|
.Op Fl freq Ar keep_frequency
|
||||||
|
.Op Fl allref
|
||||||
|
.Op Fl tsout
|
||||||
|
.Op Fl pes | ts
|
||||||
|
.Op Fl h264 | avc | h262
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Output a filtered or truncated version of an elementary stream.
|
||||||
|
The input is either H.264 (MPEG-4/AVC) or H.262 (MPEG-2).
|
||||||
|
The output is either an elementary stream, or an H.222 transport
|
||||||
|
stream
|
||||||
|
.Pp
|
||||||
|
If output is to an H.222 Transport Stream, then fixed values for
|
||||||
|
the PMT PID (0x66) and video PID (0x68) are used.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is the input elementary stream (but see
|
||||||
|
.Fl stdin
|
||||||
|
below).
|
||||||
|
.It Ar out_file
|
||||||
|
is the output stream, either an equivalent elementary
|
||||||
|
stream, or an H.222 Transport Stream (but see
|
||||||
|
.Fl stdout
|
||||||
|
and
|
||||||
|
.Fl host
|
||||||
|
below).
|
||||||
|
.El
|
||||||
|
.Ss Actions
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl copy
|
||||||
|
Copy the input data to the output file
|
||||||
|
(mostly useful as a way of truncating data with
|
||||||
|
.Fl max Ns )
|
||||||
|
.It Fl filter
|
||||||
|
Filter data from input to output, aiming to keep every
|
||||||
|
.Ar keep_frequency Ns
|
||||||
|
th frame (where
|
||||||
|
.Ar keep_frequency
|
||||||
|
is specified by
|
||||||
|
.Fl freq Ns
|
||||||
|
).
|
||||||
|
.It Fl strip
|
||||||
|
For H.264, output just the IDR and I pictures, for H.262,
|
||||||
|
output just the I pictures, but see
|
||||||
|
.Fl allref
|
||||||
|
below.
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl host Ar dest_ip Ns Op : Ns Ar port
|
||||||
|
Writes output (over TCP/IP) to the named
|
||||||
|
.Ar host ,
|
||||||
|
instead of to a named file. If
|
||||||
|
.Ar port
|
||||||
|
is not specified, it defaults to 88. Implies
|
||||||
|
.Fl tsout .
|
||||||
|
.It Fl max Ar max_frames , Fl m Ar max_frames
|
||||||
|
Maximum number of frames to read (for
|
||||||
|
.Fl filter
|
||||||
|
and
|
||||||
|
.Fl strip Ns ),
|
||||||
|
or ES units/NAL units (for
|
||||||
|
.Fl copy Ns ).
|
||||||
|
.It Fl freq Ar keep_frequency
|
||||||
|
Specify the frequency of frames to try to keep
|
||||||
|
with -filter. Defaults to 8.
|
||||||
|
.It Fl allref
|
||||||
|
With
|
||||||
|
.Fl strip ,
|
||||||
|
keep all reference pictures (H.264)
|
||||||
|
or all I and P pictures (H.262)
|
||||||
|
.It Fl tsout
|
||||||
|
Output data as Transport Stream PES packets
|
||||||
|
(the default is as Elementary Stream)
|
||||||
|
.It Fl pes , ts
|
||||||
|
The input file is TS or PS, to be read via the
|
||||||
|
PES->ES reading mechanisms. Not allowed with
|
||||||
|
.Fl stdin .
|
||||||
|
.El
|
||||||
|
.Ss Stream type:
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264 or H.262 data. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Pp
|
||||||
|
If input is from standard input (via -stdin), then it is not possible
|
||||||
|
for the program to make its own decision on the input stream type.
|
||||||
|
Instead, it defaults to H.262, and relies on the user indicating if
|
||||||
|
this is wrong.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
|
@ -0,0 +1,107 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ESMERGE 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm esmerge
|
||||||
|
.Nd Merge the contents of two ES to make a TS
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm esmerge
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl x
|
||||||
|
.Op Fl h264 | avs
|
||||||
|
.Op Fl vidrate Ar video_hz
|
||||||
|
.Op Fl rate Ar audio_hz | Fl cd | dat
|
||||||
|
.Op Fl adts | l2 | mp2adts | mp4adts | ac3
|
||||||
|
.Op Fl patpmtfreq Ar pat_freq
|
||||||
|
.Ar video_file audio_file out_file
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Merge the contents of two Elementary Stream (ES) files, one containing
|
||||||
|
video data, and the other audio, to produce an output file containing
|
||||||
|
Transport Stream (TS).
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar video_file
|
||||||
|
is the ES file containing video.
|
||||||
|
.It Ar audio_file
|
||||||
|
is the ES file containing audio.
|
||||||
|
.It Ar out_file
|
||||||
|
is the resultant TS file.
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about each audio/video frame
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl x
|
||||||
|
Output diagnostic information.
|
||||||
|
.It Fl h264
|
||||||
|
The video stream is H.264 (the default)
|
||||||
|
.It Fl avs
|
||||||
|
The video stream is AVS
|
||||||
|
.It Fl vidrate Ar video_hz
|
||||||
|
Video frame rate in Hz - defaults to 25Hz.
|
||||||
|
.It Fl rate Ar audio_hz
|
||||||
|
Audio sample rate in Hertz - defaults to 44100, i.e., 44.1KHz.
|
||||||
|
.It Fl cd
|
||||||
|
Equivalent to
|
||||||
|
.Fl rate Cm 44100 No (CD rate), the default.
|
||||||
|
.It Fl dat
|
||||||
|
Equivalent to
|
||||||
|
.Fl rate Cm 48000 No (DAT rate).
|
||||||
|
.It Fl adts
|
||||||
|
The audio stream is ADTS (the default)
|
||||||
|
.It Fl l2
|
||||||
|
The audio stream is MPEG layer 2 audio
|
||||||
|
.It Fl mp2adts
|
||||||
|
The audio stream is MPEG-2 style ADTS regardless of ID bit
|
||||||
|
.It Fl mp4adts
|
||||||
|
The audio stream is MPEG-4 style ADTS regardless of ID bit
|
||||||
|
.It Fl ac3
|
||||||
|
The audio stream is Dolby AC-3 in ATSC
|
||||||
|
.It Fl patpmtfreq Ar pat_freq
|
||||||
|
PAT and PMT will be inserted every
|
||||||
|
.Ar pat_freq
|
||||||
|
video frames. By default,
|
||||||
|
.Ar pat_freq No = 0 and PAT/PMT are inserted only at
|
||||||
|
the start of the output stream.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.Sh BUGS
|
||||||
|
For the moment, the video input must be H.264 or AVS, and the audio input
|
||||||
|
ADTS, AC-3 ATSC or MPEG layer 2. Also, the audio is assumed to have a
|
||||||
|
constant number of samples per frame.
|
|
@ -0,0 +1,128 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ESREPORT 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm esreport
|
||||||
|
.Nd Report on the contents of an ES
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm esmerge
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl frames | findfields | afd | es
|
||||||
|
.Op Fl framesize
|
||||||
|
.Op Fl frametype
|
||||||
|
.Op Fl x
|
||||||
|
.Op Fl max Ar max-units | Fl m Ar max_units
|
||||||
|
.Op Fl pes | ts
|
||||||
|
.Op Fl pesreport
|
||||||
|
.Op Fl h264 | avc | h262 | avs
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Report on the content of an elementary stream containing H.264
|
||||||
|
(MPEG-4/AVC), H.262 (MPEG-2) or AVS video data.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is the Elementary Stream file (but see -stdin below)
|
||||||
|
.El
|
||||||
|
.Ss What to report
|
||||||
|
The default is to report on H.262 items, AVS frames or H.264 NAL units.
|
||||||
|
Other choices are:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl frames
|
||||||
|
Report by frames. The default for AVS.
|
||||||
|
.It Fl findfields
|
||||||
|
Report on any fields in the data. Ignored for AVS.
|
||||||
|
.It Fl afd
|
||||||
|
Report (just) on AFD changes in H.262. Ignored for the other types of file.
|
||||||
|
.It Fl es
|
||||||
|
Report on ES units.
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
Reporting on frames may be modified by:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl framesize
|
||||||
|
Report on the sizes of frames (mean, etc.).
|
||||||
|
.It Fl frametype
|
||||||
|
Report on the numbers of different type of frame.
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
(in fact, both of these imply -frame).
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
For H.262 data, output information about the data
|
||||||
|
in each MPEG-2 item. For ES units, output information
|
||||||
|
about the data in each ES unit. Ignored for H.264 data.
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output summary information (i.e., the number
|
||||||
|
of entities in the file, statistics, etc.)
|
||||||
|
.It Fl x
|
||||||
|
Show details of each NAL unit as it is read.
|
||||||
|
.It Fl stdin
|
||||||
|
Take input from <stdin>, instead of a named file
|
||||||
|
.It Fl max Ar max_units , Fl m Ar max_units
|
||||||
|
Maximum number of NAL units/MPEG-2 items/AVS frames/ES units
|
||||||
|
to read. If -frames, then the program will stop after
|
||||||
|
that many frames. If reading 'frames', MPEG-2 and AVS will
|
||||||
|
also count sequence headers and sequence end.
|
||||||
|
.It Fl pes , ts
|
||||||
|
The input file is TS or PS, to be read via the PES to
|
||||||
|
ES reading mechanisms
|
||||||
|
.It Fl pesreport
|
||||||
|
Report on PES headers. Implies
|
||||||
|
.Fl pes No and Fl q .
|
||||||
|
.El
|
||||||
|
.Ss Stream type:
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264, H.262 or AVS data. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Pp
|
||||||
|
If input is from standard input (via -stdin), then it is not possible
|
||||||
|
for the program to make its own decision on the input stream type.
|
||||||
|
Instead, it defaults to H.262, and relies on the user indicating if
|
||||||
|
this is wrong.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.It Fl avs
|
||||||
|
Force the program to treat the input as AVS.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
|
@ -0,0 +1,111 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ESREVERSE 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm esreverse
|
||||||
|
.Nd Report on the contents of an ES
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm esreverse
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl host Ar host Ns Op : Ns Ar port
|
||||||
|
.Op Fl max Ar max_frames | Fl m Ar max_frames
|
||||||
|
.Op Fl freq Ar frame_freq
|
||||||
|
.Op Fl tsout
|
||||||
|
.Op Fl pes |-ts
|
||||||
|
.Op Fl server
|
||||||
|
.Op Fl x
|
||||||
|
.Op Fl h264 | avc | h262
|
||||||
|
.Ar in_file
|
||||||
|
.Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Output a reversed stream derived from the input H.264 (MPEG-4/AVC)
|
||||||
|
or H.262 (MPEG-2) elementary stream.
|
||||||
|
.Pp
|
||||||
|
If output is to an H.222 Transport Stream, then fixed values for
|
||||||
|
the PMT PID (0x66) and video PID (0x68) are used.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is the input elementary stream.
|
||||||
|
.It Ar out_file
|
||||||
|
is the output stream, either an equivalent elementary
|
||||||
|
stream, or an H.222 Transport Stream (but see
|
||||||
|
Fl stdout No and Fl host below).
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output additional (debugging) messages
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl stdout
|
||||||
|
Write output to <stdout>, instead of a named file. Forces
|
||||||
|
.Fl quiet No and Fl "err stderr".
|
||||||
|
.It Fl host Ar host Ns Op : Ns Ar port
|
||||||
|
Writes output (over TCP/IP) to the named <host>,
|
||||||
|
instead of to a named file. If <port> is not
|
||||||
|
specified, it defaults to 88. Implies
|
||||||
|
.Fl tsout .
|
||||||
|
.It Fl max Ar max_frames | Fl m Ar max_frames
|
||||||
|
Maximum number of frames to read
|
||||||
|
.It Fl freq Ar frame_freq
|
||||||
|
Specify the frequency of frames to try to keep
|
||||||
|
when reversing. Defaults to 8.
|
||||||
|
.It Fl tsout
|
||||||
|
Output H.222 Transport Stream
|
||||||
|
.It Fl pes , ts
|
||||||
|
The input file is TS or PS, to be read via the
|
||||||
|
PES to ES reading mechanisms
|
||||||
|
.It Fl server
|
||||||
|
Also output as normal forward video as reversal
|
||||||
|
data is being collected. Implies
|
||||||
|
.Fl pes No and Fl tsout .
|
||||||
|
.It Fl x
|
||||||
|
Temporary extra debugging information
|
||||||
|
.El
|
||||||
|
.Ss Stream type:
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264 or H.262 data. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt M2TS2TS 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm m2ts2ts
|
||||||
|
.Nd convert .m2ts to .ts
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm m2ts2ts
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl buffer Ar buf_pkts | Fl b Ar buf_pkts
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Converts BDAV MPEG-2 Transport Stream file (M2TS) to an 'ordinary' TS file
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is a BDAV MPEG-2 Transport Stream file (M2TS)(but see
|
||||||
|
.Fl stdin
|
||||||
|
below).
|
||||||
|
.It Ar out_file
|
||||||
|
is an H.222 Transport Stream file (but see
|
||||||
|
.Fl stdout
|
||||||
|
below).
|
||||||
|
.El
|
||||||
|
.Ss General switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input instead of a file
|
||||||
|
.It Fl stdout
|
||||||
|
Output to standard output instead of a file. Forces
|
||||||
|
.Fl quiet No and Fl "err stderr" .
|
||||||
|
.It Fl b Ar buf_pkts , Fl buffer Ar buf_pkts
|
||||||
|
Number of TS packets to buffer for reordering
|
||||||
|
.Bq default = 4
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt PCAPREPORT 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm pcapreport
|
||||||
|
.Nd Get info about a TS in a pcap
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm pcapinfo
|
||||||
|
.Fl h | help Op Cm detail
|
||||||
|
.Nm pcapinfo
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl name Ar base_name | Fl n Ar base_name
|
||||||
|
.Op Fl extract | Fl x
|
||||||
|
.Op Fl csvgen | Fl c
|
||||||
|
.Op Fl output Ar udp_name | Fl o Ar udp_name
|
||||||
|
.Op Fl max Ar max_read | Fl m Ar max_read
|
||||||
|
.Op Fl data
|
||||||
|
.Op Fl a
|
||||||
|
.Op Fl d Ar dest_ip Ns Op : Ns Ar port
|
||||||
|
.Op Fl g | Fl good-ts-only
|
||||||
|
.Op Fl keep-bad
|
||||||
|
.Op Fl tfmt Ar time_format
|
||||||
|
.Op Fl dump-data | Fl D
|
||||||
|
.Op Fl extra-dump | Fl E
|
||||||
|
.Op Fl times | Fl t
|
||||||
|
.Op Fl skew-discontinuity-threshold Ar threshold | Fl skew Ar threshold
|
||||||
|
.Ar file
|
||||||
|
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Report and/or extract the Transport Streams in a .pcap. In analyse mode (
|
||||||
|
.Fl a
|
||||||
|
) the timing info in the TS (PCRs) can be compared with the timing info in
|
||||||
|
the pcap.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h , help
|
||||||
|
Produce usage summary
|
||||||
|
.It Fl h Cm detail , Fl help Cm detail
|
||||||
|
Produce usage + more detail on what the output actually means
|
||||||
|
.It Fl a , analyse
|
||||||
|
Analyse. Produces summary info on every TS in the pcap
|
||||||
|
.It Fl d Ar dest_ip Ns Oo : Ns Ar port Oc , Fl destip Ar dest_ip Ns Oo : Ns Ar port Oc
|
||||||
|
Select data with the given destination IP and port.
|
||||||
|
If the
|
||||||
|
.Ar port
|
||||||
|
is not specified, it defaults to 0 (see below).
|
||||||
|
.It Fl g , Fl good-ts-only
|
||||||
|
Only extract/analyse packets that seem entirely good.
|
||||||
|
By default there is a bit of slack in determining if a
|
||||||
|
packet is good and some dodgy packets are let through.
|
||||||
|
This switch ensures that all packets pass simple testing
|
||||||
|
.It Fl keep-bad
|
||||||
|
Extract all packets including bad ones. Is implied if
|
||||||
|
an ip & port filter is set. Overriden by
|
||||||
|
.Fl -good-ts-only .
|
||||||
|
.It Fl tfmt Ar time_format
|
||||||
|
Sets the format for printed times
|
||||||
|
.Pp
|
||||||
|
.Ar time_format
|
||||||
|
is one of
|
||||||
|
.Bl -tag
|
||||||
|
.It Cm 90
|
||||||
|
.Bq Default
|
||||||
|
show as 90KHz timestamps (suffix 't' on the values: e.g., 4362599t).
|
||||||
|
.It Cm 27
|
||||||
|
Show as 27MHz timestamps (similar, e.g., 25151:000t).
|
||||||
|
.It Cm 32
|
||||||
|
Show as 90KHz timestamps, but only the low 32 bits.
|
||||||
|
.It Cm ms
|
||||||
|
Show as milliseconds.
|
||||||
|
.It Cm hms
|
||||||
|
Show as hours/minutes/seconds (H:MM:SS.ssss, the H
|
||||||
|
can be more than one digit if necessary)
|
||||||
|
.El
|
||||||
|
.It Fl dump-data , Fl D
|
||||||
|
Dump any data in the input file to stdout.
|
||||||
|
.It Fl extra-dump , Fl E
|
||||||
|
Dump only data which isn't being sent to the
|
||||||
|
Fl o
|
||||||
|
file.
|
||||||
|
.It Fl times , Fl t
|
||||||
|
Report continuously on PCR vs PCAP timing for the destination specified in
|
||||||
|
.Fl d .
|
||||||
|
.It Fl skew-discontinuity-threshold Ar threshold , Fl skew Ar threshold
|
||||||
|
Gives the skew discontinuity threshold in 90kHz units.
|
||||||
|
A value of 0 disables this.
|
||||||
|
.Bq "default = 6*90000"
|
||||||
|
.It Fl split-section
|
||||||
|
Split extracted streams into multiple files on section
|
||||||
|
(discontinutity) boundries
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Ar file
|
||||||
|
The pcap stream file to get info on
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
Specifying 0.0.0.0 for destination IP will capture all hosts, specifying 0
|
||||||
|
as a destination port will capture all ports on the destination host.
|
||||||
|
.Pp
|
||||||
|
Network packet numbers start at 1 (like wireshark)
|
||||||
|
.Pp
|
||||||
|
TS packet numbers start at 0.
|
||||||
|
.Ss Analyse output
|
||||||
|
.Bl -tag
|
||||||
|
.It Times
|
||||||
|
(packet and PCR)
|
||||||
|
The times associated with packets and PCR are held internally in 90kHz units
|
||||||
|
and are displayed in those units by default
|
||||||
|
.It Stream
|
||||||
|
A set of packets to the same IP & Port. TS streams are detected by looking
|
||||||
|
for 0x47s at appropriate places in the packets
|
||||||
|
.It Section
|
||||||
|
A part of a stream which appears to have a continuous TS embedded in it. If
|
||||||
|
the PCR jumps then a new section should be started (though this will not
|
||||||
|
generate a separate .ts file if the extraction option is in effect unless
|
||||||
|
.Fl split-section
|
||||||
|
is specified, nor will it generate a new .csv file.)
|
||||||
|
.Pp
|
||||||
|
As it stands pcapreport will only report on a single PCR pid within a TS. If
|
||||||
|
multiple pids with PCRs are detected then this will be reported but the other
|
||||||
|
PCRs will be ignored
|
||||||
|
.It Skew
|
||||||
|
This is the difference between the time in the pcap for a UDP packet and any
|
||||||
|
PCR found in the TS contained within that packet. The accuracy of this figure
|
||||||
|
obviously depends on how good the clock was in the capture process. Skew is
|
||||||
|
arbitrarily set to zero at the start of a section. A skew of >6s is assumed
|
||||||
|
to be a discontinuity and will start a new section.
|
||||||
|
.Pp
|
||||||
|
Positive skew means that we received too low a PCR for this timestamp.
|
||||||
|
.It Drift
|
||||||
|
This is skew over time and (assuming that the playout process is good)
|
||||||
|
represents the difference in speed between the transmitters clock and the
|
||||||
|
receivers clock. The algorithm for determining this isn't very sophisticated
|
||||||
|
so if you have a large maximum jitter or a short sample this should be taken
|
||||||
|
with a pinch of salt. Beware also that PC clocks (like the one in the m/c
|
||||||
|
doing the tcpdump) are not always amongst the most stable or accurate; however
|
||||||
|
they should be good enough to detect gross errors
|
||||||
|
.It Jitter
|
||||||
|
This is measured as the difference between the maximum and minimum skews over
|
||||||
|
a 10sec (max 1024 samples) period. This should be long enough to capture a
|
||||||
|
good baseline but short enough that drift has a negligible effect
|
||||||
|
.It Max Jitter
|
||||||
|
The maximum value of jitter (see above) found in a section
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr tsinfo 1 ,
|
||||||
|
.Xr tsreport 1
|
||||||
|
.Xr rtp2264 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.Sh BUGS
|
||||||
|
pcapreport can only deal with IPv4. IPv6 is beyond its current capabilities.
|
|
@ -0,0 +1,194 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt ps2ts 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm ps2ts
|
||||||
|
.Nd Extract a program stream from a Transport Stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm ps2ts
|
||||||
|
.Fl pid Ar pid | Fl video | audio
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl dvd | notdvd | nodvd
|
||||||
|
.Op Fl vstream Ar vstream_no
|
||||||
|
.Op Fl astream Ar astream_no
|
||||||
|
.Op Fl ac3stream Ar ac3stream_no
|
||||||
|
.Op Fl host Ar host Ns Op : Ns port
|
||||||
|
.Op Fl vpid Ar vpid_no
|
||||||
|
.Op Fl apid Ar apid_no
|
||||||
|
.Op Fl noaudio
|
||||||
|
.Op Fl pmt Ar pmt_pid_no
|
||||||
|
.Op Fl prepeat Ar pat_freq
|
||||||
|
.Op Fl pad Ar pad_pkts
|
||||||
|
.Op Fl h264 | avc | h262 | mp42 | vtype Ar video_type
|
||||||
|
.Op Fl dolby Cm dvd | atsc
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Convert an H.222 program stream to H.222 transport stream.
|
||||||
|
.Pp
|
||||||
|
This program does not make use of any Program Stream Map packets
|
||||||
|
in the data (mainly because I have yet to see data with any). This
|
||||||
|
means that the program has to determine the stream type of the data
|
||||||
|
based on the first few ES units.
|
||||||
|
.Pp
|
||||||
|
This program does not output more than one video and one audio
|
||||||
|
stream. If the program stream data contains more than one of each,
|
||||||
|
the first will be used, and the others ignored (with a message
|
||||||
|
indicating this).
|
||||||
|
.Pp
|
||||||
|
It is assumed that the video stream will contain DTS values in its
|
||||||
|
PES packets at reasonable intervals, which can be used as PCR values
|
||||||
|
in the transport stream, and thus the video stream's PID can be used
|
||||||
|
as the PCR PID in the transport stream.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is a file containing the program stream data
|
||||||
|
(but see -stdin below)
|
||||||
|
.It Ar out_file
|
||||||
|
is a transport stream file
|
||||||
|
(but see -stdout and -host below)
|
||||||
|
.El
|
||||||
|
.Ss input switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl stdin
|
||||||
|
take input from <stdin>, instead of a named file
|
||||||
|
.It Fl dvd
|
||||||
|
The PS data is from a DVD. This is the default.
|
||||||
|
This switch has no effect on MPEG-1 PS data.
|
||||||
|
.It Fl notdvd , nodvd
|
||||||
|
The PS data is not from a DVD.
|
||||||
|
The DVD specification stores AC-3 (Dolby), DTS and
|
||||||
|
other audio in a specialised manner in private_stream_1.
|
||||||
|
.It Fl vstream Ar vstream_no
|
||||||
|
Take video from video stream
|
||||||
|
.Ar vstream_no
|
||||||
|
(0..7). The default is the first video stream found.
|
||||||
|
.It Fl astream Ar astream_no
|
||||||
|
Take audio from audio stream
|
||||||
|
.Ar astream_no
|
||||||
|
(0..31). The default is the first audio stream found
|
||||||
|
(this includes private_stream_1 on non-DVD streams).
|
||||||
|
.It Fl ac3stream Ar astream_no
|
||||||
|
Take audio from AC3 substream
|
||||||
|
.Ar ac3stream_no
|
||||||
|
(0..7), from private_stream_1. This implies -dvd.
|
||||||
|
(If audio is being taken from a substream, the user
|
||||||
|
is assumed to have determined which one is wanted,
|
||||||
|
e.g., using psreport)
|
||||||
|
.El
|
||||||
|
.Ss Output Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl host Ar host Ns Op : Ns Arport
|
||||||
|
Writes output (over TCP/IP) to the named <host>,
|
||||||
|
instead of to a named file. If
|
||||||
|
.Ar <port>
|
||||||
|
is not specified, it defaults to 88.
|
||||||
|
.It Fl vpid Ar vpid_no
|
||||||
|
.Ar vpid_no is the video PID to use for the data.
|
||||||
|
Use '-vpid 0x<pid>' to specify a hex value.
|
||||||
|
Defaults to 0x68.
|
||||||
|
.It Fl apid Ar apid_no
|
||||||
|
.Ar apid_no
|
||||||
|
is the audio PID to use for the data.
|
||||||
|
Use '-apid 0x<pid>' to specify a hex value.
|
||||||
|
Defaults to 0x67.
|
||||||
|
.It Fl noaudio
|
||||||
|
Don't output the audio data
|
||||||
|
.It Fl pmt Ar pmt_pid_no
|
||||||
|
.Ar pmt_pid_no is the PMT PID to use.
|
||||||
|
Use '-pmt 0x<pid>' to specify a hex value.
|
||||||
|
Defaults to 0x66
|
||||||
|
.It Fl prepeat Ar pat_freq
|
||||||
|
Output the program data (PAT/PMT) after every
|
||||||
|
.Ar pat_freq
|
||||||
|
PS packs. Defaults to 100.
|
||||||
|
.It Fl pad Ar pad_pkts
|
||||||
|
Pad the start with
|
||||||
|
.Ar pad_pkts
|
||||||
|
filler TS packets, to allow
|
||||||
|
a TS reader to synchronize with the datastream.
|
||||||
|
Defaults to 8.
|
||||||
|
.El
|
||||||
|
.Ss General switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Print a 'v' for each video packet and an 'a' for
|
||||||
|
each audio packet, as it is read
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl max Ar max_pkts , Fl m Ar max_pkts
|
||||||
|
Maximum number of PS packets to read.
|
||||||
|
.El
|
||||||
|
.Ss Stream type
|
||||||
|
When the TS data is being output, it is flagged to indicate whether
|
||||||
|
it conforms to H.262, H.264, etc. It is important to get this right, as
|
||||||
|
it will affect interpretation of the TS data.
|
||||||
|
.Pp
|
||||||
|
If input is from a file, then the program will look at the start of
|
||||||
|
the file to determine if the stream is H.264 or H.262 data. This
|
||||||
|
process may occasionally come to the wrong conclusion, in which case
|
||||||
|
the user can override the choice using the following switches.
|
||||||
|
.Pp
|
||||||
|
If input is from standard input (via -stdin), then it is not possible
|
||||||
|
for the program to make its own decision on the input stream type.
|
||||||
|
Instead, it defaults to H.262, and relies on the user indicating if
|
||||||
|
this is wrong.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.It Fl mp42
|
||||||
|
Force the program to treat the input as MPEG-4/Part 2.
|
||||||
|
.It Fl vtype Ar video_type
|
||||||
|
Force the program to treat the input as video of
|
||||||
|
stream type <type> (e.g., 0x42 means AVS video). It is
|
||||||
|
up to the user to specify a valid <type>.
|
||||||
|
.El
|
||||||
|
If the audio stream being output is Dolby (AC-3), then the stream type
|
||||||
|
used to output it differs for DVB (European) and ATSC (USA) data. It
|
||||||
|
may be specified as follows:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl dolby Cm dvb
|
||||||
|
Use stream type 0x06 (the default)
|
||||||
|
.It Fl dolby Cm atsc
|
||||||
|
Use stream type 0x81
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt PSDOTS 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm psdots
|
||||||
|
.Nd Present the content of an PS as a sequence of characters
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm psdots
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Present the content of a Program Stream file as a sequence of
|
||||||
|
characters, representing the packets.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is an H.222 Program Stream file (but see
|
||||||
|
.Fl stdin Ns )
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output a description of the characters used
|
||||||
|
.It Fl max Ar max_pkts , Fl m Ar max_pkts
|
||||||
|
Maximum number of PS packets to read
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt PSREPORT 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm psreport
|
||||||
|
.Nd Report on the contents of a PS
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm psreport
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl dvd | notdvd | nodvd
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Report on the packets in a Program Stream.
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is an H.222 Program Stream file (but see
|
||||||
|
.Fl stdin
|
||||||
|
below)
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output packet data as well
|
||||||
|
.It Fl stdin
|
||||||
|
Take input from <stdin>, instead of a named file
|
||||||
|
.It Fl max Ar max_pkts , Fl m Ar max_pkts
|
||||||
|
Maximum number of PS packets to read
|
||||||
|
.It Fl dvd
|
||||||
|
The PS data is from a DVD. This is the default.
|
||||||
|
This switch has no effect on MPEG-1 PS data.
|
||||||
|
.It Fl notdvd , nodvd
|
||||||
|
The PS data is not from a DVD.
|
||||||
|
The DVD specification stores AC-3 (Dolby), DTS and
|
||||||
|
other audio in a specialised manner in private_stream_1.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt RTP2264 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm rtp2264
|
||||||
|
.Nd convert H.264 in RTP into H.264 ES
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm rtp2264
|
||||||
|
.Ar in_file
|
||||||
|
.Ar out_file
|
||||||
|
.Op Ar b64_block Ns Op , Ns Ar b64_block Ns Op ,...
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Take a RTP file (probably generated by
|
||||||
|
.Xr pcapreport 1 Ns )
|
||||||
|
containing
|
||||||
|
an H.264 stream and convert it into an Annex B encoded .264
|
||||||
|
elementary stream file.
|
||||||
|
.Pp
|
||||||
|
If
|
||||||
|
.Ar b64_block Ns s
|
||||||
|
are specified then it is assumed to be one or more
|
||||||
|
B64 encoded blocks containing SPS or PPS or other similar blocks.
|
||||||
|
These will each have a 00 00 00 01 sequence added at the start and
|
||||||
|
then written at the start of the out_file
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr pcapreport 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt STREAM_TYPE 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm stream-type
|
||||||
|
.Nd Guess the type of a stream file
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm stream-type
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Ar in_file
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Attempt to determine if an input stream is Transport Stream,
|
||||||
|
Program Stream, or Elementary Stream, and if the latter, if it
|
||||||
|
is H.262 or H.264 (i.e., MPEG-2 or MPEG-4/AVC respectively).
|
||||||
|
The mechanisms used are fairly crude, assuming that:
|
||||||
|
.Bl -dash
|
||||||
|
.It
|
||||||
|
data is byte aligned
|
||||||
|
.It
|
||||||
|
for TS, the first byte in the file will be the start of a NAL unit,
|
||||||
|
and PAT/PMT packets will be findable
|
||||||
|
.It
|
||||||
|
for PS, the first packet starts immediately at the start of the
|
||||||
|
file, and is a pack header
|
||||||
|
.It
|
||||||
|
if the first 1000 packets could be H.262 *or* H.264, then the data
|
||||||
|
is assumed to be H.264 (the program doesn't try to determine
|
||||||
|
sensible sequences of H.262/H.264 packets, so this is a reasonable
|
||||||
|
way of guessing)
|
||||||
|
.El
|
||||||
|
It is quite possible that data which is not relevant will be
|
||||||
|
misidentified
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is the file to analyse
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output more detailed information about how it is making its decision
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.Sh RETURN VALUES
|
||||||
|
The program exit value is:
|
||||||
|
.Bl -tag
|
||||||
|
.It 10
|
||||||
|
if it detects Transport Stream,
|
||||||
|
.It 11
|
||||||
|
if it detects Program Stream,
|
||||||
|
.It 12
|
||||||
|
if it detects Elementary Stream containing H.262 (MPEG-2),
|
||||||
|
.It 14
|
||||||
|
if it detects Elementary Stream containing H.264 (MPEG-4/AVC),
|
||||||
|
.It 5
|
||||||
|
if it looks like it might be PES,
|
||||||
|
.It 9
|
||||||
|
if it really cannot decide, or
|
||||||
|
.It 0
|
||||||
|
if some error occurred
|
||||||
|
.El
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TS2ES 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm ts2es
|
||||||
|
.Nd Extract a program stream from a Transport Stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm ts2es
|
||||||
|
.Fl pid Ar pid | Fl video | audio
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl pes | ps
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Extract a single (elementary) program stream from a Transport Stream
|
||||||
|
(or Program Stream).
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is an H.222 Transport Stream file (but see -stdin and -pes)
|
||||||
|
.It Ar out_file
|
||||||
|
is a single elementary stream file (but see -stdout)
|
||||||
|
.El
|
||||||
|
.Ss Which stream to extract:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl pid Ar pid
|
||||||
|
Output data for the stream with the given
|
||||||
|
.Ar pid .
|
||||||
|
Use
|
||||||
|
.Fl pid No 0x Ns Ar pid No to specify a hex value
|
||||||
|
.It Fl video
|
||||||
|
Output data for the (first) video stream
|
||||||
|
named in the (first) PMT. This is the default.
|
||||||
|
.It Fl audio
|
||||||
|
Output data for the (first) audio stream
|
||||||
|
named in the (first) PMT
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl max Ar max_pkts , Fl m Ar max_pkts
|
||||||
|
Maximum number of TS packets to read.
|
||||||
|
.It Fl pes , ps
|
||||||
|
Use the PES interface to read ES units from
|
||||||
|
the input file. This allows PS data to be read
|
||||||
|
(there is no point in using this for TS data).
|
||||||
|
Does not support
|
||||||
|
.Fl pid , stdin No or Fl stdout.
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TS_PACKET_INSERT 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm ts_packet_insert
|
||||||
|
.Nd Insert TS packets into a Transport Stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm ts_packet_insert
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl p Ar positions
|
||||||
|
.Op Fl pid Ar pid_no
|
||||||
|
.Op Fl s string
|
||||||
|
.Op Fl o Ar out_file
|
||||||
|
.Ar in_file
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Insert TS packets into a Transport Stream at positions
|
||||||
|
specified by the user.
|
||||||
|
.Ss Input
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
An H.222 Transport Stream file.
|
||||||
|
.El
|
||||||
|
.Ss Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl p Ar positions
|
||||||
|
This a a colon (':') delimited string of numbers
|
||||||
|
between 0 and 1, representing how far through to put
|
||||||
|
each TS packet. E.g., -p 0.1:0.4:0.7:0.9 will insert
|
||||||
|
4 packets at 10%, 40%, 70% and 90% through the file.
|
||||||
|
.It Fl pid Ar pid_no
|
||||||
|
The inserted packets will have the PID specfied.
|
||||||
|
.Bq default = 0x68
|
||||||
|
.It Fl s Ar string
|
||||||
|
The inserted packets will contain
|
||||||
|
.Ar string
|
||||||
|
as their payload.
|
||||||
|
.Bq default = 'Inserted packet'
|
||||||
|
.It Fl o Ar out_file
|
||||||
|
The new TS file will be written out with the given name
|
||||||
|
.Bq default = out.ts
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.Sh EXAMPLES
|
||||||
|
ts_packet_insert -p 0.3:0.6 -o out.ts -pid 89 -s "AD=start" in.ts
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSDVBSUB 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsdvbsub
|
||||||
|
.Nd Dump DVB subtitling from a stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsdvbsub
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl pid Ar pid_no
|
||||||
|
.Op Fl prog Ar prog_no
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Parse & dump the contents of a single DVB subtitling stream from a
|
||||||
|
Transport Stream (or Program Stream).
|
||||||
|
.Ss Files
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
is an H.222 Transport Stream file (but see
|
||||||
|
.Fl stdin
|
||||||
|
and
|
||||||
|
.Fl pes
|
||||||
|
below).
|
||||||
|
.El
|
||||||
|
.Ss Stream to extract
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl pid Ar pid_no
|
||||||
|
Output data for the stream with the given
|
||||||
|
.Ar pid_no .
|
||||||
|
Use -pid 0x<pid> to specify a hex value
|
||||||
|
.Bq default = the stream will be located from the PMT info
|
||||||
|
.It Fl prog Ar prog_no
|
||||||
|
Program number
|
||||||
|
.Bq default = 1
|
||||||
|
.El
|
||||||
|
.Ss general switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output informational/diagnostic messages
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Only output error messages
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl m Ar max_pkts , Fl max Ar max_pkts
|
||||||
|
Maximum number of TS packets to read
|
||||||
|
.El
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSFILTER 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsfilter
|
||||||
|
.Nd Output a filtered or truncated version of a transport stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsfilter
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl i Ar in_file
|
||||||
|
.Op Fl o Ar out_file
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl \&! | Fl invert
|
||||||
|
.Ar pid_no Oo Ar pid_no Oc No ...
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Filter the given
|
||||||
|
.Ar pid_no Ns s
|
||||||
|
out of stdin and write the result on stdout.
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl i Ar in_file
|
||||||
|
Take input from this file and not stdin.
|
||||||
|
.It Fl o Ar out_file
|
||||||
|
Send output to this file and not stdout.
|
||||||
|
.It Fl v , verbose
|
||||||
|
Be verbose.
|
||||||
|
.It Fl m Ar max_pkts, Fl max Ar max_pkts
|
||||||
|
All packets after the nth are regarded as
|
||||||
|
not matching any pids.
|
||||||
|
.It Fl \&! , invert
|
||||||
|
Invert whatever your decision was before
|
||||||
|
applying it - the output contains only
|
||||||
|
pids not in the list up to max packets
|
||||||
|
and all packets in the input from then
|
||||||
|
on.
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr esdots 1 ,
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSINFO 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsinfo
|
||||||
|
.Nd get info about the contents of a transport stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsinfo
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl stdin
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl max Ar max_scan | Fl m Ar max_scan
|
||||||
|
.Op Fl repeat Ar PMT_count
|
||||||
|
.Op Ar file
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Report on the program streams in a Transport Stream. This command just dumps
|
||||||
|
the initial PAT/PMT pairing. If you want more info on the program streams
|
||||||
|
within the transport stream then use
|
||||||
|
.Xr tsreport 1 .
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Fl m Ar max_scan , Fl max Ar max_scan
|
||||||
|
.Ar max_qscan
|
||||||
|
is the Number of TS packets to scan. Defaults to 10000.
|
||||||
|
.It Fl repeat Ar PMT_count
|
||||||
|
Look for
|
||||||
|
.Ar PMT_count
|
||||||
|
PMT packets, and report on each
|
||||||
|
.It Ar file
|
||||||
|
The transport stream file to get info on. If
|
||||||
|
.Fl stdin
|
||||||
|
is specified then no
|
||||||
|
.Ar file
|
||||||
|
is expected
|
||||||
|
.El
|
||||||
|
.\" The following commands should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr tsreport 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSPLAY 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsplay
|
||||||
|
.Nd stream a file
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsplay
|
||||||
|
.Fl help
|
||||||
|
.Op Ar subject
|
||||||
|
.Nm tsplay
|
||||||
|
.Op Fl details
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl verbose | v
|
||||||
|
.Op Fl loop
|
||||||
|
.Op Fl max Ar max_pkts | Fl m Ar max_pkts
|
||||||
|
.Op Fl mcastif Ar mcast_if | Fl i Ar mcast_if
|
||||||
|
.Op Fl tcp | udp
|
||||||
|
.Ar in_file | Fl stdin
|
||||||
|
.Ar host Ns Oo : Ns Ar port Oc |
|
||||||
|
.Fl output Ar out_file | Fl o Ar out_file | Fl stdout
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Act as a server which plays the given file (containing Transport
|
||||||
|
Stream or Program Stream data). The output is always Transport
|
||||||
|
Stream.
|
||||||
|
.Ss Input
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar in_file
|
||||||
|
Input is from the named H.222 TS file.
|
||||||
|
.It Fl stdin
|
||||||
|
Input is from standard input.
|
||||||
|
.El
|
||||||
|
.Ss Output
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar host Ns Op : Ns Ar port
|
||||||
|
Normally, output is to a named host. If
|
||||||
|
.Ar port
|
||||||
|
is not specified, it defaults to 88.
|
||||||
|
Output defaults to UDP.
|
||||||
|
.It Fl o Ar out_file , Fl output Ar out_file
|
||||||
|
Output is to file
|
||||||
|
.Ar out_file .
|
||||||
|
.It Fl tcp
|
||||||
|
Output to the host is via TCP.
|
||||||
|
.It Fl udp
|
||||||
|
Output to the host is via UDP.
|
||||||
|
.Bq default
|
||||||
|
.It Fl stdout
|
||||||
|
Output is to standard output. Forces
|
||||||
|
.Fl quiet No and Fl "err stderr" .
|
||||||
|
.It Fl i Ar mcast_if , Fl mcastif Ar mcast_if
|
||||||
|
If output is via UDP, and
|
||||||
|
.Ar host
|
||||||
|
is a multicast
|
||||||
|
address, then
|
||||||
|
.Ar mcast_if
|
||||||
|
is the IP address of the network interface to use. This may not be supported
|
||||||
|
on some versions of Windows.
|
||||||
|
.El
|
||||||
|
.Ss General Switches
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl details
|
||||||
|
Print out more detailed help information,
|
||||||
|
including some less common options.
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output additional diagnostic messages
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Suppress informational and warning messages
|
||||||
|
.It Fl help
|
||||||
|
Summarise the
|
||||||
|
.Ar subject Ns s
|
||||||
|
that can be specified
|
||||||
|
.It Fl help Ar subject
|
||||||
|
Show help on a particular subject
|
||||||
|
.It Fl m Ar max_pkts , Fl max Ar max_pkts
|
||||||
|
Maximum number of TS/PS packets to read.
|
||||||
|
See -details for more information.
|
||||||
|
.It Fl loop
|
||||||
|
Play the input file repeatedly. Can be combined with
|
||||||
|
Fl max .
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr tsinfo 1 ,
|
||||||
|
.Xr pcapreport 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -0,0 +1,138 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSREPORT 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsreport
|
||||||
|
.Nd get info about the streams within a transport stream.
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsinfo
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl timing | Fl t
|
||||||
|
.Op Fl max Ar max_read | Fl m Ar max_read
|
||||||
|
.Op Fl data
|
||||||
|
.Ar file | Fl stdin
|
||||||
|
.Nm tsinfo
|
||||||
|
.Fl buffering | Fl b
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl verbose | Fl v
|
||||||
|
.Op Fl quiet | Fl q
|
||||||
|
.Op Fl max Ar max_read | Fl m Ar max_read
|
||||||
|
.Op Fl o Ar csv_file Op Fl 32
|
||||||
|
.Op Fl cnt
|
||||||
|
.Op Fl prog Ar prog_no
|
||||||
|
.Op Fl tfmt Ar time_format
|
||||||
|
.Op Fl tafmt Ar time_format
|
||||||
|
.Ar file | Fl stdin
|
||||||
|
.Nm tsinfo
|
||||||
|
.Fl justpid Ar pid
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl max Ar max_read | Fl m Ar max_read
|
||||||
|
.Ar file | Fl stdin
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Report on the streams in a Transport Stream. In general the most
|
||||||
|
useful inforation is returned by the
|
||||||
|
.Fl b
|
||||||
|
option.
|
||||||
|
.Ss Common options
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output extra information about packets
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Output less information
|
||||||
|
.It Fl m Ar max_scan , Fl max Ar max_scan
|
||||||
|
.Ar max_scan
|
||||||
|
is the Number of TS packets to scan. Defaults to the entire file.
|
||||||
|
.It Fl stdin
|
||||||
|
Input from standard input, instead of a file
|
||||||
|
.It Ar file
|
||||||
|
The transport stream file to get info on. If
|
||||||
|
.Fl stdin
|
||||||
|
is specified then no
|
||||||
|
.Ar file
|
||||||
|
is expected
|
||||||
|
.El
|
||||||
|
.Ss Fl b , Fl buffering
|
||||||
|
Report on the differences between PCR and PTS, and
|
||||||
|
between PCR and DTS. This is relevant to the size of
|
||||||
|
buffers needed in the decoder. Also reports bitrates;
|
||||||
|
the max bitrate is calculated over 0.5sec
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl o Ar csv_file Op Fl 32
|
||||||
|
Output timing in to a CSV file called
|
||||||
|
.Ar csv_file .
|
||||||
|
If
|
||||||
|
.Fl 32
|
||||||
|
is used as well then the timing ifo is restricted to the bottom 32 bits
|
||||||
|
.It Fl cnt Ar pid
|
||||||
|
Check values of continuity_counter for pid
|
||||||
|
.Ar pid .
|
||||||
|
Writes all the values of the counter to a file called
|
||||||
|
.Pa continuity_counter.txt .
|
||||||
|
.It Fl prog Ar prog_no
|
||||||
|
Report on program prog_no
|
||||||
|
.Bq "default = 1"
|
||||||
|
(hopefully default will be 'all' in the future)
|
||||||
|
.It Fl tfmt Ar time_format
|
||||||
|
Specify format of time differences.
|
||||||
|
.It Fl tafmt Ar time_format
|
||||||
|
Specify format of absolute times.
|
||||||
|
.Pp
|
||||||
|
.Ar time_format
|
||||||
|
is one of
|
||||||
|
.Bl -tag
|
||||||
|
.It Cm 90
|
||||||
|
.Bq Default
|
||||||
|
show as 90KHz timestamps (suffix 't' on the values: e.g., 4362599t).
|
||||||
|
.It Cm 27
|
||||||
|
Show as 27MHz timestamps (similar, e.g., 25151:000t).
|
||||||
|
.It Cm 32
|
||||||
|
Show as 90KHz timestamps, but only the low 32 bits.
|
||||||
|
.It Cm ms
|
||||||
|
Show as milliseconds.
|
||||||
|
.It Cm hms
|
||||||
|
Show as hours/minutes/seconds (H:MM:SS.ssss, the H
|
||||||
|
can be more than one digit if necessary)
|
||||||
|
.El
|
||||||
|
.El
|
||||||
|
.Ss Fl justpid Ar pid
|
||||||
|
Just show data (file offset, index, adaptation field
|
||||||
|
and payload) for TS packets with the given PID.
|
||||||
|
PID 0 is allowed (i.e., the PAT)
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr tsinfo 1 ,
|
||||||
|
.Xr pcapreport 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
.\" The following commands are required for all man pages.
|
||||||
|
.Dd October 28, 2015
|
||||||
|
.Dt TSSERVE 1
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm tsserve
|
||||||
|
.Nd get info about the streams within a transport stream
|
||||||
|
.\" This next command is for sections 2 and 3 only.
|
||||||
|
.\" .Sh LIBRARY
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm tsserve
|
||||||
|
.Op Fl details
|
||||||
|
.Op Fl "err stdout"
|
||||||
|
.Op Fl "err stderr"
|
||||||
|
.Op Fl quiet | q
|
||||||
|
.Op Fl verbose | v
|
||||||
|
.Op Fl port Ar port_no
|
||||||
|
.Op Fl noaudio
|
||||||
|
.Op Fl pad Ar filler_pkts
|
||||||
|
.Op Fl noseqhdr
|
||||||
|
.Op Fl prepeat Ar pat_freq
|
||||||
|
.Op Fl h264 | avc | h262
|
||||||
|
.Op Fl dolby Cm dvb | atsc
|
||||||
|
.Op Fl 0
|
||||||
|
.Ar file0
|
||||||
|
.Op Fl 1 Ar file1
|
||||||
|
.Op Fl 2 Ar file2
|
||||||
|
.Ns ...
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
Act as a server which plays the given file (containing Transport
|
||||||
|
Stream or Program Stream data). The output is always Transport
|
||||||
|
Stream.
|
||||||
|
.Ss Input:
|
||||||
|
.Bl -tag
|
||||||
|
.It Ar infile
|
||||||
|
An H.222.0 TS or PS file to serve to the client.
|
||||||
|
This will be treated as file 0 (see below).
|
||||||
|
.It Fl 0 Ar file0 No .. Fl 9 Ar file9
|
||||||
|
Specify files 0 through 9, selectable with command
|
||||||
|
characters 0 through 9. The lowest numbered file
|
||||||
|
will be the default for display.
|
||||||
|
.El
|
||||||
|
.Ss General Switches:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl details
|
||||||
|
Print out more detailed help information,
|
||||||
|
including some less common options.
|
||||||
|
.It Fl "err stdout"
|
||||||
|
Write error messages to standard output (the default)
|
||||||
|
.It Fl "err stderr"
|
||||||
|
Write error messages to standard error (Unix traditional)
|
||||||
|
.It Fl v , Fl verbose
|
||||||
|
Output additional diagnostic messages
|
||||||
|
.It Fl q , Fl quiet
|
||||||
|
Suppress informational and warning messages
|
||||||
|
.It Fl port Ar port_no
|
||||||
|
Listen for a client on port
|
||||||
|
.Ar port_no
|
||||||
|
.Bq default = 88
|
||||||
|
.It Fl noaudio
|
||||||
|
Ignore any audio data
|
||||||
|
.It Fl pad Ar filler_pkts
|
||||||
|
Pad the start of the output with
|
||||||
|
.Ar filler_pkts
|
||||||
|
filler TS packets, to allow the client to synchronize with
|
||||||
|
the datastream.
|
||||||
|
.Bq default = 8
|
||||||
|
.It Fl noseqhdr
|
||||||
|
Do not output sequence headers for fast forward/reverse
|
||||||
|
data. Only relevant to H.262 data.
|
||||||
|
.El
|
||||||
|
.Ss Program Stream Switches:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl prepeat Ar pat_freq
|
||||||
|
Output the program data (PAT/PMT) after every
|
||||||
|
.Ar pat_freq
|
||||||
|
PS packs.
|
||||||
|
.Bq default = 100
|
||||||
|
.It Fl h264 , avc
|
||||||
|
Force the program to treat the input as MPEG-4/AVC.
|
||||||
|
.It Fl h262
|
||||||
|
Force the program to treat the input as MPEG-2.
|
||||||
|
.El
|
||||||
|
Both of these affect the stream type of the output data.
|
||||||
|
.Pp
|
||||||
|
If the audio stream being output is Dolby (AC-3), then the stream type
|
||||||
|
used to output it differs for DVB (European) and ATSC (USA) data. It
|
||||||
|
may be specified as follows:
|
||||||
|
.Bl -tag
|
||||||
|
.It Fl dolby Cm dvb
|
||||||
|
Use stream type 0x06.
|
||||||
|
.Bq default
|
||||||
|
.It Fl dolby Cm atsc
|
||||||
|
Use stream type 0x81
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
For information on using the program in other modes, see
|
||||||
|
.Fl details.
|
||||||
|
.\" The following cnds should be uncommented and
|
||||||
|
.\" used where appropriate.
|
||||||
|
.\" .Sh IMPLEMENTATION NOTES
|
||||||
|
.\" This next command is for sections 2, 3 and 9 function
|
||||||
|
.\" return values only.
|
||||||
|
.\" .Sh RETURN VALUES
|
||||||
|
.\" This next command is for sections 1, 6, 7 and 8 only.
|
||||||
|
.\" .Sh ENVIRONMENT
|
||||||
|
.\" .Sh FILES
|
||||||
|
.\" .Sh EXAMPLES
|
||||||
|
.\" This next command is for sections 1, 6, 7, 8 and 9 only
|
||||||
|
.\" (command return values (to shell) and
|
||||||
|
.\" fprintf/stderr type diagnostics).
|
||||||
|
.\" .Sh DIAGNOSTICS
|
||||||
|
.\" .Sh COMPATIBILITY
|
||||||
|
.\" This next command is for sections 2, 3 and 9 error
|
||||||
|
.\" and signal handling only.
|
||||||
|
.\" .Sh ERRORS
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr tsinfo 1 ,
|
||||||
|
.Xr pcapreport 1
|
||||||
|
.\" .Sh STANDARDS
|
||||||
|
.\" .Sh HISTORY
|
||||||
|
.\" .Sh AUTHORS
|
||||||
|
.\" .Sh BUGS
|
||||||
|
|
|
@ -1425,6 +1425,8 @@ static void print_usage()
|
||||||
" -skew-discontinuity-threshold <number>\n"
|
" -skew-discontinuity-threshold <number>\n"
|
||||||
" -skew <number> Gives the skew discontinuity threshold in 90kHz units.\n"
|
" -skew <number> Gives the skew discontinuity threshold in 90kHz units.\n"
|
||||||
" A value of 0 disables this. [default = 6*90000]\n"
|
" A value of 0 disables this. [default = 6*90000]\n"
|
||||||
|
" -split-section Split extracted streams into multiple files on section\n"
|
||||||
|
" (discontinutity) boundries\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -err stdout Write error messages to standard output (the default)\n"
|
" -err stdout Write error messages to standard output (the default)\n"
|
||||||
" -err stderr Write error messages to standard error (Unix traditional)\n"
|
" -err stderr Write error messages to standard error (Unix traditional)\n"
|
||||||
|
|
582
rtp2264.c
582
rtp2264.c
|
@ -1,281 +1,301 @@
|
||||||
/*
|
/*
|
||||||
* Report on a pcap (.pcap) file.
|
* Filter a transport stream by a list of pids.
|
||||||
*
|
*
|
||||||
* <rrw@kynesim.co.uk> 2008-09-05
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
*
|
* Version: MPL 1.1
|
||||||
* ***** BEGIN LICENSE BLOCK *****
|
*
|
||||||
* Version: MPL 1.1
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
*
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
* the License. You may obtain a copy of the License at
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
* http://www.mozilla.org/MPL/
|
||||||
* the License. You may obtain a copy of the License at
|
*
|
||||||
* http://www.mozilla.org/MPL/
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
*
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
* for the specific language governing rights and limitations under the
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
* License.
|
||||||
* for the specific language governing rights and limitations under the
|
*
|
||||||
* License.
|
* The Original Code is the MPEG TS, PS and ES tools.
|
||||||
*
|
*
|
||||||
* The Original Code is the MPEG TS, PS and ES tools.
|
* The Initial Developer of the Original Code is Amino Communications Ltd.
|
||||||
*
|
* Portions created by the Initial Developer are Copyright (C) 2008
|
||||||
* The Initial Developer of the Original Code is Amino Communications Ltd.
|
* the Initial Developer. All Rights Reserved.
|
||||||
* Portions created by the Initial Developer are Copyright (C) 2008
|
*
|
||||||
* the Initial Developer. All Rights Reserved.
|
* Contributor(s):
|
||||||
*
|
* Amino Communications Ltd, Swavesey, Cambridge UK
|
||||||
* Contributor(s):
|
*
|
||||||
* Richard Watts, Kynesim <rrw@kynesim.co.uk>
|
* ***** END LICENSE BLOCK *****
|
||||||
*
|
*/
|
||||||
* ***** END LICENSE BLOCK *****
|
|
||||||
*/
|
// H.264 over RTP is defined in RFC3984
|
||||||
|
|
||||||
// H.264 over RTP is defined in RFC3984
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <limits.h>
|
||||||
#include <stdlib.h>
|
#include <errno.h>
|
||||||
#include <limits.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <fcntl.h>
|
||||||
#include <string.h>
|
#include <limits.h>
|
||||||
#include <fcntl.h>
|
#include <time.h>
|
||||||
#include <limits.h>
|
#ifdef _WIN32
|
||||||
#include <time.h>
|
#include <stddef.h>
|
||||||
#ifdef _WIN32
|
#endif // _WIN32
|
||||||
#include <stddef.h>
|
|
||||||
#endif // _WIN32
|
#include "compat.h"
|
||||||
|
#include "version.h"
|
||||||
#include "compat.h"
|
#include "misc_fns.h"
|
||||||
#include "version.h"
|
#include "fmtx.h"
|
||||||
#include "misc_fns.h"
|
|
||||||
#include "fmtx.h"
|
#define RTP_HDR_LEN 8
|
||||||
|
|
||||||
#define RTP_HDR_LEN 8
|
#define RTP_PREFIX_STRING "RTP "
|
||||||
|
#define RTP_PREFIX_LEN 4
|
||||||
#define RTP_PREFIX_STRING "RTP "
|
#define RTP_LEN_OFFSET 4
|
||||||
#define RTP_PREFIX_LEN 4
|
|
||||||
#define RTP_LEN_OFFSET 4
|
static int c642b(const char c)
|
||||||
|
{
|
||||||
static int c642b(const char c)
|
return (c >= 'A' && c <= 'Z') ? c - 'A' :
|
||||||
{
|
(c >= 'a' && c <= 'z') ? c - 'a' + 26 :
|
||||||
return (c >= 'A' && c <= 'Z') ? c - 'A' :
|
(c >= '0' && c <= '9') ? c - '0' + 52 :
|
||||||
(c >= 'a' && c <= 'z') ? c - 'a' + 26 :
|
(c == '+' || c == '-') ? 62 :
|
||||||
(c >= '0' && c <= '9') ? c - '0' + 52 :
|
(c == '/' || c == '_') ? 63 :
|
||||||
(c == '+' || c == '-') ? 62 :
|
(c == '=') ? -1 : -2;
|
||||||
(c == '/' || c == '_') ? 63 :
|
}
|
||||||
(c == '=') ? -1 : -2;
|
|
||||||
}
|
static size_t b64str2binn(byte * const dest0, const size_t dlen, const char ** const plast, const char * src)
|
||||||
|
{
|
||||||
static size_t b64str2binn(byte * const dest0, const size_t dlen, const char ** const plast, const char * src)
|
byte * dest = dest0;
|
||||||
{
|
uint32_t a = 0;
|
||||||
byte * dest = dest0;
|
ssize_t i = 4;
|
||||||
uint32_t a = 0;
|
size_t slen = (dlen * 4 + 5) / 3;
|
||||||
ssize_t i = 4;
|
int b;
|
||||||
size_t slen = (dlen * 4 + 5) / 3;
|
|
||||||
int b;
|
while ((b = c642b(*src++)) >= 0 && --slen != 0)
|
||||||
|
{
|
||||||
while ((b = c642b(*src++)) >= 0 && --slen != 0)
|
a = (a << 6) | b;
|
||||||
{
|
if (--i == 0)
|
||||||
a = (a << 6) | b;
|
{
|
||||||
if (--i == 0)
|
*dest++ = (a >> 16) & 0xff;
|
||||||
{
|
*dest++ = (a >> 8) & 0xff;
|
||||||
*dest++ = (a >> 16) & 0xff;
|
*dest++ = a & 0xff;
|
||||||
*dest++ = (a >> 8) & 0xff;
|
i = 4;
|
||||||
*dest++ = a & 0xff;
|
}
|
||||||
i = 4;
|
}
|
||||||
}
|
|
||||||
}
|
// Tidy up at the end
|
||||||
|
if (i < 3) // i == 4 good, all done, i == 3 error
|
||||||
// Tidy up at the end
|
{
|
||||||
if (i < 3) // i == 4 good, all done, i == 3 error
|
a <<= i * 6;
|
||||||
{
|
*dest++ = (a >> 16) & 0xff;
|
||||||
a <<= i * 6;
|
|
||||||
*dest++ = (a >> 16) & 0xff;
|
// Consume '='
|
||||||
|
if (b == -1)
|
||||||
// Consume '='
|
b = c642b(*src++);
|
||||||
if (b == -1)
|
|
||||||
b = c642b(*src++);
|
if (i == 1)
|
||||||
|
{
|
||||||
if (i == 1)
|
*dest++ = (a >> 8) & 0xff;
|
||||||
{
|
}
|
||||||
*dest++ = (a >> 8) & 0xff;
|
else if (b == -1)
|
||||||
}
|
++src;
|
||||||
else if (b == -1)
|
}
|
||||||
++src;
|
|
||||||
}
|
if (plast != NULL)
|
||||||
|
*plast = src - 1;
|
||||||
if (plast != NULL)
|
|
||||||
*plast = src - 1;
|
return dest - dest0;
|
||||||
|
}
|
||||||
return dest - dest0;
|
|
||||||
}
|
|
||||||
|
static void usage(void)
|
||||||
|
{
|
||||||
int main(int argc, char **argv)
|
print_msg(
|
||||||
{
|
"Usage: rtp2264 <infile> <outfile> [<B64_header>[,<B64_header>...]]\n"
|
||||||
FILE *f_in = NULL;
|
"\n");
|
||||||
FILE *f_out = NULL;
|
REPORT_VERSION("rtp2264");
|
||||||
const char * fname_in;
|
print_msg(
|
||||||
const char * fname_out;
|
"\n"
|
||||||
int zcount = 0;
|
" Take a RTP file (probably generated by pcapreport) containing\n"
|
||||||
|
" an H.264 stream and convert it into an Annex B encoded .264\n"
|
||||||
if (argc < 3)
|
" elementary stream file.\n"
|
||||||
{
|
"\n"
|
||||||
fprintf(stderr, "Usage: <in.rtp> <out.264>\n");
|
" If <B64_header>s are specified then they are one or more\n"
|
||||||
return 1;
|
" B64 encoded blocks containing SPS or PPS or other similar headers.\n"
|
||||||
}
|
" These will each have a 00 00 00 01 sequence added at the start and\n"
|
||||||
|
" then written at the start of <outfile>\n"
|
||||||
fname_in = argv[1];
|
"\n"
|
||||||
fname_out = argv[2];
|
"Switches:\n"
|
||||||
|
" none\n"
|
||||||
if ((f_in = fopen(fname_in, "rb")) == NULL)
|
);
|
||||||
{
|
exit(1);
|
||||||
perror(argv[1]);
|
}
|
||||||
return 1;
|
|
||||||
}
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
if ((f_out = fopen(fname_out, "wb")) == NULL)
|
FILE *f_in = NULL;
|
||||||
{
|
FILE *f_out = NULL;
|
||||||
perror(argv[2]);
|
const char * fname_in;
|
||||||
return 1;
|
const char * fname_out;
|
||||||
}
|
int zcount = 0;
|
||||||
|
|
||||||
if (argc > 3)
|
if (argc < 3)
|
||||||
{
|
{
|
||||||
byte psbuf[0x1000];
|
usage();
|
||||||
const char * eo64 = argv[3];
|
}
|
||||||
|
|
||||||
psbuf[0] = 0;
|
fname_in = argv[1];
|
||||||
psbuf[1] = 0;
|
fname_out = argv[2];
|
||||||
psbuf[2] = 0;
|
|
||||||
psbuf[3] = 1;
|
if ((f_in = fopen(fname_in, "rb")) == NULL)
|
||||||
|
{
|
||||||
do
|
perror(argv[1]);
|
||||||
{
|
return 1;
|
||||||
size_t len = b64str2binn(psbuf + 4, sizeof(psbuf) - 4, &eo64, eo64);
|
}
|
||||||
|
|
||||||
if ((*eo64 != 0 && *eo64 != ',') || len == 0)
|
if ((f_out = fopen(fname_out, "wb")) == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Bad B64 string: '%s' (len=%zd, chr=%d)\n", argv[3], len, *eo64);
|
perror(argv[2]);
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fwrite(psbuf, len + 4, 1, f_out) != 1)
|
if (argc > 3)
|
||||||
{
|
{
|
||||||
perror(fname_out);
|
byte psbuf[0x1000];
|
||||||
exit(1);
|
const char * eo64 = argv[3];
|
||||||
}
|
|
||||||
} while (*eo64++ == ',');
|
psbuf[0] = 0;
|
||||||
}
|
psbuf[1] = 0;
|
||||||
|
psbuf[2] = 0;
|
||||||
for (;;)
|
psbuf[3] = 1;
|
||||||
{
|
|
||||||
byte buf[0x10000];
|
do
|
||||||
uint32_t rtplen;
|
{
|
||||||
|
size_t len = b64str2binn(psbuf + 4, sizeof(psbuf) - 4, &eo64, eo64);
|
||||||
if (fread(buf, RTP_HDR_LEN, 1, f_in) != 1)
|
|
||||||
{
|
if ((*eo64 != 0 && *eo64 != ',') || len == 0)
|
||||||
if (ferror(f_in))
|
{
|
||||||
perror(fname_in);
|
fprintf(stderr, "Bad B64 string: '%s' (len=%zd, chr=%d)\n", argv[3], len, *eo64);
|
||||||
break;
|
exit(1);
|
||||||
}
|
}
|
||||||
if (memcmp(buf, RTP_PREFIX_STRING, RTP_PREFIX_LEN) != 0)
|
|
||||||
{
|
if (fwrite(psbuf, len + 4, 1, f_out) != 1)
|
||||||
fprintf(stderr, "### Bad RTP prefix\n");
|
{
|
||||||
break;
|
perror(fname_out);
|
||||||
}
|
exit(1);
|
||||||
rtplen = uint_32_be(buf + RTP_LEN_OFFSET);
|
}
|
||||||
if (rtplen > sizeof(buf) || rtplen < 12)
|
} while (*eo64++ == ',');
|
||||||
{
|
}
|
||||||
fprintf(stderr, "### Bad RTP len: %" PRIu32 "\n", rtplen);
|
|
||||||
break;
|
for (;;)
|
||||||
}
|
{
|
||||||
|
byte buf[0x10000];
|
||||||
if (fread(buf, rtplen, 1, f_in) != 1)
|
uint32_t rtplen;
|
||||||
{
|
|
||||||
if (ferror(f_in))
|
if (fread(buf, RTP_HDR_LEN, 1, f_in) != 1)
|
||||||
perror(fname_in);
|
{
|
||||||
else
|
if (ferror(f_in))
|
||||||
fprintf(stderr, "### Unexpected EOF\n");
|
perror(fname_in);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (memcmp(buf, RTP_PREFIX_STRING, RTP_PREFIX_LEN) != 0)
|
||||||
{
|
{
|
||||||
size_t offset = 12 + (buf[0] & 0xf) * 4;
|
fprintf(stderr, "### Bad RTP prefix\n");
|
||||||
size_t padlen = ((buf[0] & 0x20) != 0) ? buf[rtplen - 1] : 0;
|
break;
|
||||||
|
}
|
||||||
// Check for extension
|
rtplen = uint_32_be(buf + RTP_LEN_OFFSET);
|
||||||
if ((buf[0] & 0x10) != 0) // X bit
|
if (rtplen > sizeof(buf) || rtplen < 12)
|
||||||
offset += 4 + uint_16_be(buf + offset + 2);
|
{
|
||||||
|
fprintf(stderr, "### Bad RTP len: %" PRIu32 "\n", rtplen);
|
||||||
if (rtplen < offset + padlen + 1)
|
break;
|
||||||
{
|
}
|
||||||
fprintf(stderr, "### Bad RTP offset + padding\n");
|
|
||||||
}
|
if (fread(buf, rtplen, 1, f_in) != 1)
|
||||||
|
{
|
||||||
// OK - got payload
|
if (ferror(f_in))
|
||||||
|
perror(fname_in);
|
||||||
{
|
else
|
||||||
const byte * p = buf + offset;
|
fprintf(stderr, "### Unexpected EOF\n");
|
||||||
const byte * p_end = buf + rtplen - padlen;
|
break;
|
||||||
byte buf2[0x18000]; // Allow for max expansion
|
}
|
||||||
byte * q = buf2;
|
|
||||||
byte sc1 = *p++;
|
{
|
||||||
|
size_t offset = 12 + (buf[0] & 0xf) * 4;
|
||||||
if ((sc1 & 0x1f) == 28)
|
size_t padlen = ((buf[0] & 0x20) != 0) ? buf[rtplen - 1] : 0;
|
||||||
{
|
|
||||||
byte sc2 = *p++;
|
// Check for extension
|
||||||
if ((sc2 & 0x80) != 0) // S bit
|
if ((buf[0] & 0x10) != 0) // X bit
|
||||||
{
|
offset += 4 + uint_16_be(buf + offset + 2);
|
||||||
// Start of fragmented unit
|
|
||||||
sc1 = (sc1 & 0xe0) | (sc2 & 0x1f);
|
if (rtplen < offset + padlen + 1)
|
||||||
*q++ = 0;
|
{
|
||||||
*q++ = 0;
|
fprintf(stderr, "### Bad RTP offset + padding\n");
|
||||||
*q++ = 0;
|
}
|
||||||
*q++ = 1;
|
|
||||||
*q++ = sc1;
|
// OK - got payload
|
||||||
zcount = 0;
|
|
||||||
|
{
|
||||||
printf("Fragmented block with code: %x\n", sc1);
|
const byte * p = buf + offset;
|
||||||
}
|
const byte * p_end = buf + rtplen - padlen;
|
||||||
}
|
byte buf2[0x18000]; // Allow for max expansion
|
||||||
else
|
byte * q = buf2;
|
||||||
{
|
byte sc1 = *p++;
|
||||||
// Normal start code
|
|
||||||
*q++ = 0;
|
if ((sc1 & 0x1f) == 28)
|
||||||
*q++ = 0;
|
{
|
||||||
*q++ = 0;
|
byte sc2 = *p++;
|
||||||
*q++ = 1;
|
if ((sc2 & 0x80) != 0) // S bit
|
||||||
*q++ = sc1;
|
{
|
||||||
zcount = 0;
|
// Start of fragmented unit
|
||||||
printf("Start block with code: %x\n", sc1);
|
sc1 = (sc1 & 0xe0) | (sc2 & 0x1f);
|
||||||
}
|
*q++ = 0;
|
||||||
|
*q++ = 0;
|
||||||
|
*q++ = 0;
|
||||||
// Engage emulation protect
|
*q++ = 1;
|
||||||
while (p < p_end)
|
*q++ = sc1;
|
||||||
{
|
zcount = 0;
|
||||||
const byte b = *p++;
|
|
||||||
|
printf("Fragmented block with code: %x\n", sc1);
|
||||||
if (zcount == 2 && b <= 3)
|
}
|
||||||
{
|
}
|
||||||
*q++ = 3;
|
else
|
||||||
zcount = 0;
|
{
|
||||||
}
|
// Normal start code
|
||||||
|
*q++ = 0;
|
||||||
*q++ = b;
|
*q++ = 0;
|
||||||
zcount = (b == 0) ? zcount + 1 : 0;
|
*q++ = 0;
|
||||||
}
|
*q++ = 1;
|
||||||
|
*q++ = sc1;
|
||||||
if (fwrite(buf2, q - buf2, 1, f_out) != 1)
|
zcount = 0;
|
||||||
{
|
printf("Start block with code: %x\n", sc1);
|
||||||
perror(fname_out);
|
}
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
// Engage emulation protect
|
||||||
}
|
while (p < p_end)
|
||||||
|
{
|
||||||
}
|
const byte b = *p++;
|
||||||
|
|
||||||
fclose(f_out);
|
if (zcount == 2 && b <= 3)
|
||||||
fclose(f_in);
|
{
|
||||||
return 0;
|
*q++ = 3;
|
||||||
}
|
zcount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*q++ = b;
|
||||||
|
zcount = (b == 0) ? zcount + 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fwrite(buf2, q - buf2, 1, f_out) != 1)
|
||||||
|
{
|
||||||
|
perror(fname_out);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f_out);
|
||||||
|
fclose(f_in);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue