kopia lustrzana https://github.com/F5OEO/tstools
Update to use segment 11 of the Elephant's Dream (HD) data as test data.
Improve the reporting of ES unit data slightly. --HG-- extra : convert_revision : svn%3Aeff31bef-be4a-0410-a8fe-e47997df2690/trunk%4048issue20
rodzic
8be8e9acf8
commit
657f94b363
|
@ -10,12 +10,26 @@ at least *some* predictable data to play with.
|
|||
|
||||
Contents of this directory
|
||||
==========================
|
||||
Still to be finalised (but probably a segment of Elephant's Dream -- see the
|
||||
links below for an explanation.
|
||||
For Linux users, a convenient ``setup.sh`` is provided, which will use
|
||||
``wget`` to download a segment of `Elephant's Dream`_, ``unzip`` it, and
|
||||
produce an ES file from (the resulting) TS file.
|
||||
|
||||
This is then used as test data by the doctests in the sibling ``python``
|
||||
directory.
|
||||
|
||||
Useful links
|
||||
============
|
||||
|
||||
Consolidated list of test video clip resources
|
||||
----------------------------------------------
|
||||
http://forum.doom9.org/archive/index.php/t-135034.html
|
||||
|
||||
A hopefully usedul resource on the Doom9 forum.
|
||||
|
||||
Note the link to a list of "broken" streams:
|
||||
|
||||
http://forum.doom9.org/showthread.php?t=134693
|
||||
|
||||
Elephant's Dream
|
||||
----------------
|
||||
http://www.elephantsdream.org/
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
#! /bin/sh
|
||||
#
|
||||
# A very simple script to retrieve and pre-process test data, as used by
|
||||
# ../python/rundoctest.py
|
||||
#
|
||||
# Assumes it is being run in the 'data' directory
|
||||
# Assumes the presence of 'wget' and 'unzip', and that the tstools have been
|
||||
# built.
|
||||
|
||||
# Retrieve a segment of Elephant's Dream in TS (11 is the smallest segment)
|
||||
wget http://www.w6rz.net/ed24p_11.zip
|
||||
unzip ed24p_11.zip
|
||||
ts2es ed24p_11.ts ed24p_11.video.es
|
||||
|
||||
# Afterwards:
|
||||
#
|
||||
# ed24p_11.zip 146M
|
||||
# ed26p_11.ts 314M
|
||||
# ed24p_11.video.es 147M
|
||||
|
|
@ -1,20 +1,15 @@
|
|||
Some tests for the Python binding of the TS tools
|
||||
=================================================
|
||||
|
||||
It's difficult to find example data files that are generally available. For
|
||||
the moment, I'm going to use a file I have locally, and unfortunately others
|
||||
will have to manage without. This is still better than no testing...
|
||||
We shall assume that our standard sample data has been downloaded and expanded
|
||||
into our sibling ``data`` directory. See the ``../data/setup.sh`` script.
|
||||
|
||||
>>> test_es_file = '/Users/tibs/sw/tstools/data/aladdin.es'
|
||||
>>> test_es_file = '../data/ed24p_11.video.es'
|
||||
|
||||
First, check we've got the basics working:
|
||||
|
||||
>>> from tstools import ESFile
|
||||
>>> try:
|
||||
... stream = ESFile(test_es_file)
|
||||
... except:
|
||||
... test_es_file = '/home/tibs/Videos/aladdin.es'
|
||||
... stream = ESFile(test_es_file)
|
||||
>>> stream = ESFile(test_es_file)
|
||||
|
||||
The filename is available as a "readonly" value:
|
||||
|
||||
|
@ -40,32 +35,20 @@ We should be able to iterate over its ES units:
|
|||
... es_unit_list.append(unit)
|
||||
... if count > 5:
|
||||
... break
|
||||
ES unit: start code 00, len 14: 00 00 01 00 01 1a 01 02
|
||||
ES unit: start code 01, len 972: 00 00 01 01 1a 10 73 10
|
||||
ES unit: start code 02, len 515: 00 00 01 02 1a 10 b3 05
|
||||
ES unit: start code 03, len 372: 00 00 01 03 2a 11 31 41
|
||||
ES unit: start code 04, len 347: 00 00 01 04 32 11 75 8f
|
||||
ES unit: start code 05, len 335: 00 00 01 05 32 11 70 8b
|
||||
ES unit: start code 00, len 9: 00 00 01 00 01 df ff fb b8
|
||||
ES unit: start code b5, len 9: 00 00 01 b5 85 45 4b 5d 80
|
||||
ES unit: start code 01, len 1645: 00 00 01 01 0a b0 10 09...
|
||||
ES unit: start code 02, len 1634: 00 00 01 02 0a b0 10 09...
|
||||
ES unit: start code 03, len 16: 00 00 01 03 0a b0 10 07...
|
||||
ES unit: start code 04, len 15: 00 00 01 04 0a b0 10 02...
|
||||
|
||||
From hexdump I get (something that can be written out as)::
|
||||
From ``hexdump -C`` I get (something that can be written out as)::
|
||||
|
||||
00 00 01 00 01 1a 01 02 20 00 00 00 00 00
|
||||
00 00 01 01 1a 10 73 10 1e 67 08 53 75 65 bf 1d 00 6d ...
|
||||
00 00 01 00 01 df ff fb b8
|
||||
00 00 01 b5 85 45 4b 5d 80
|
||||
00 00 01 01 0a b0 10 09 1c 56 ec d8 72 94 01 ...
|
||||
|
||||
which tends to support those results (applying the rule "split before
|
||||
00 00 01")..
|
||||
|
||||
Confusingly ('cos it confuses me, who am easily confused), ``esreport -es -v``
|
||||
gives me something that translates as::
|
||||
|
||||
ES unit: start code 00, len 12: 00 00 01 00 00 4a 0c 98
|
||||
ES unit: start code 01, len 1717: 00 00 01 01 1a 87 e2 40
|
||||
ES unit: start code 02, len 988: 00 00 01 02 1b f8 90 69
|
||||
ES unit: start code 03, len 865: 00 00 01 03 2a 93 e2 45
|
||||
ES unit: start code 04, len 803: 00 00 01 04 2a 93 e2 45
|
||||
ES unit: start code 05, len 685: 00 00 01 05 32 93 e2 65
|
||||
|
||||
(which suggests I'm misremembering how that works).
|
||||
which tends to support those results.
|
||||
|
||||
And close it:
|
||||
|
||||
|
@ -88,14 +71,14 @@ We can ask an ES unit about itself:
|
|||
0
|
||||
>>> data = unit.data
|
||||
>>> len(data)
|
||||
14
|
||||
9
|
||||
>>> data[0]
|
||||
'\x00'
|
||||
>>> text = 'data:'
|
||||
>>> for ii in range(8):
|
||||
... text += ' %02x'%ord(data[ii])
|
||||
>>> print text
|
||||
data: 00 00 01 00 01 1a 01 02
|
||||
data: 00 00 01 00 01 df ff fb
|
||||
>>> unit.fred
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
|
@ -120,12 +103,12 @@ We can create an ES unit from a Python 'string':
|
|||
|
||||
>>> from tstools import ESUnit
|
||||
>>> print 'old ',repr(es_unit_list[0])
|
||||
old ES unit: start code 00, len 14: 00 00 01 00 01 1a 01 02
|
||||
old ES unit: start code 00, len 9: 00 00 01 00 01 df ff fb b8
|
||||
>>> new = ESUnit(es_unit_list[0].data)
|
||||
>>> print 'new ',repr(new)
|
||||
new ES unit: start code 00, len 14: 00 00 01 00 01 1a 01 02
|
||||
new ES unit: start code 00, len 9: 00 00 01 00 01 df ff fb b8
|
||||
>>> print 'old ',repr(es_unit_list[0])
|
||||
old ES unit: start code 00, len 14: 00 00 01 00 01 1a 01 02
|
||||
old ES unit: start code 00, len 9: 00 00 01 00 01 df ff fb b8
|
||||
>>> new == es_unit_list[0]
|
||||
True
|
||||
|
||||
|
@ -167,14 +150,14 @@ We already saw an ESOffset being returned:
|
|||
>>> es_unit_list[0].start_posn
|
||||
0+0
|
||||
>>> es_unit_list[1].start_posn
|
||||
14+0
|
||||
9+0
|
||||
>>> es_unit_list[1].start_posn.report()
|
||||
Offset 0 in packet at offset 14 in file
|
||||
Offset 0 in packet at offset 9 in file
|
||||
|
||||
Output more like that produced by the C report tools can also be obtained:
|
||||
|
||||
>>> print es_unit_list[1].start_posn.formatted()
|
||||
00000000/00000014
|
||||
00000000/00000009
|
||||
|
||||
We can create our own:
|
||||
|
||||
|
@ -240,7 +223,7 @@ be overkill, but all seemed sensible at the time):
|
|||
>>> f.seek(-1)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TSToolsException: Error seeking to (-1,) in file '/Users/tibs/sw/tstools/data/aladdin.es'
|
||||
TSToolsException: Error seeking to (-1,) in file '../data/ed24p_11.video.es'
|
||||
|
||||
Let's try proper seeking, though:
|
||||
|
||||
|
|
|
@ -271,6 +271,11 @@ cdef class ESUnit:
|
|||
self.unit.data_len)
|
||||
for 0 <= ii < min(self.unit.data_len,8):
|
||||
text += ' %02x'%self.unit.data[ii]
|
||||
|
||||
if self.unit.data_len == 9:
|
||||
text += ' %02x'%self.unit.data[8]
|
||||
elif self.unit.data_len > 9:
|
||||
text += '...'
|
||||
return text
|
||||
|
||||
cdef __set_es_unit(self, ES_unit_p unit):
|
||||
|
@ -467,3 +472,12 @@ cdef class ESFile:
|
|||
self.fileno = -1
|
||||
self.name = None
|
||||
self.mode = None
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# vim: set filetype=python expandtab shiftwidth=4:
|
||||
# [X]Emacs local variables declaration - place us into python mode
|
||||
# Local Variables:
|
||||
# mode:python
|
||||
# py-indent-offset:4
|
||||
# End:
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue