|
List Info
Thread: a few things about nut.txt
|
|
| a few things about nut.txt |

|
2006-11-25 10:53:16 |
Hi
On Fri, Nov 24, 2006 at 10:58:20PM -0500, Rich Felker wrote:
> On Sat, Nov 25, 2006 at 12:03:55AM +0100, Michael
Niedermayer wrote:
> > [...]
> > >
> > > > * nut files with EOR cannot be converted
to other containers or more
> > > > correctly you cannot seek correctly in
the resulting file
> > >
> > > Not true.
> >
> > wait, EOR is "absolutely needed" and it
works in containers which dont have
> > EOR, how can both be true?
>
> Other containers don't support correct seeking with
subtitles unless
> they have an index of all subtitles.
i dont think this is true, maybe someone who knows the
details about subs
in mpeg-ps/ts could clarify but my suspicion is that there
are rules in the
relevant specs which ensure that the correct subs are
displayed after
seeking, and most other containers which support subs have
an index ...
> NUT's back_ptr is the mechanism
> by which NUT makes this possible, but without EOR it
will ruin seeking
> in files without extremely frequent subtitles.
>
> > just try:
> >
> > Sub: K K
> > Vid: KFFFFKFF..1hour..KFFFFKFF..1hour..KFFF
> >
> > you can either
> > A. ignore the subs and seek purely based on the
video stream (will not
> > display subs after seeking)
> > B. seek to previous keyframe of all streams (will
not allow you to seek
> > into the 2 hour segment without sub keyframes
>
> Having the same subtitle displayed for 2 hours duration
(or even more
> than 5-10 seconds duration) is nonsense. If you meant
for the subtitle
> at the beginning in your example to only be briefly
displayed, then no
> subs for the next 2 hours, EOR is what allows NUT to
accomplish that!
my example is about a non nut container, and what is
displayed or not
between the keyframes of the subtitle stream is NOT known to
the
demuxer (and neither to the nut muxer which should mux that,
unless
it parses the subtitle stream ...)
>
> The only other possibilities are to give up on your
correct seeking
> with subtitles (which you seemed to want the most of
any of us) or
> throw in thousands of fake empty keyframes.
yes, ~1000 small (<10byte) keyframes whos position in
time matches the video
keyframes would be the correct solution, needing 10kb for 2
hours is
negligible its a mere ~ 0.01 kbit/sec
if you have several streams with normal keyframe distances
(10sec / 300frame)
and the keyframes are not aligned relative to each other
then you
_CANNOT_ seek correctly, EOR does not help
heres a example:
vid1 KFF...10sec...FFKFF
vid2 FF..5sec..FKF...10sec...
to seek and display both streams you will have to _DECODE_ 5
seconds of video
which with high resolution will need about 5seconds ...
if one stream is a subtitle stream and one a video stream
then the VERY same
happens
example:
syncp S S S S S
backptr v------/ / /
v--------------------
vid KFKFFFFFFFFFFFFFFFFFFFFFFFFFFK
sub K F F F K F F F
seek target ^
for the seek target the last syncpoint is choosen, its back
ptr points to
the second sync point, decoding from there will give you a
video keyframe
after that there are maybe 10 seconds or longer until a
subtitle keyframe
you MUST decode these video frames without displaying them
if you want
correct seeking
-> you CANNOT seek correctly if keyframes in a subtitle
stream are not very
frequent or aligned to the other keyframes, EOR has no
effect on this
if OTOH keyframes are frequent or aligned then EOR isnt
needed, so what
EOR seems to do is it affects only a case which doesnt work
with and
without EOR
[...]
--
Michael GnuPG fingerprint:
9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or
copy any book
Today you'd get arrested for mere telling someone where the
library is
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| EOR (was: Re: a few things about
nut.txt) |

|
2006-11-25 11:55:25 |
On Saturday 25 November 2006 04:41, Rich Felker wrote:
> On Fri, Nov 24, 2006 at 09:26:00PM +0100, Ivo wrote:
> > > > + EOR frames for non-subtitle streams
are only valid at the end
> > > > of the + stream.
> > >
> > > It would be nice to have a note that they are
syntactically valid but
> > > that they need not be interpreted for
compliance with the current
> > > version of NUT and that processes generating
NUT files MUST NOT write
> > > EOR for non-subtitle streams.
> >
> > Perhaps:
> >
> > EOR frames for non-subtitle streams are
syntactically valid, but,
> > except for the last frame, they SHOULD be ignored
by demuxers and MUST
> > NOT be written by muxers.
>
> No, ignoring them is semantically incorrect.
Interpreting them should
> just be completely outside the scope of the NUT 1.x
spec. If we ever
> make a NUT 2.0, at that time it might or might not make
sense to
> assign the natural meaning to them, but I'd be inclined
against it
> still.
I see. I misunderstood "need not be interpreted".
Next try:
+ Muxers MUST NOT write EOR frames for non-subtitle streams,
except for the
+ last frame.
This implies that demuxers will never encounter EOR frames
in the middle of
non-subtitle streams, and hence need not to interpret them.
--Ivo
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-25 18:38:39 |
On Sat, Nov 25, 2006 at 11:53:16AM +0100, Michael
Niedermayer wrote:
> Hi
>
> On Fri, Nov 24, 2006 at 10:58:20PM -0500, Rich Felker
wrote:
> > On Sat, Nov 25, 2006 at 12:03:55AM +0100, Michael
Niedermayer wrote:
> > > [...]
> > > >
> > > > > * nut files with EOR cannot be
converted to other containers or more
> > > > > correctly you cannot seek
correctly in the resulting file
> > > >
> > > > Not true.
> > >
> > > wait, EOR is "absolutely needed"
and it works in containers which dont have
> > > EOR, how can both be true?
> >
> > Other containers don't support correct seeking
with subtitles unless
> > they have an index of all subtitles.
>
> i dont think this is true, maybe someone who knows the
details about subs
> in mpeg-ps/ts could clarify but my suspicion is that
there are rules in the
> relevant specs which ensure that the correct subs are
displayed after
> seeking, and most other containers which support subs
have an index ...
I'm quite sure mpeg-ps/ts make no provision for this. Maybe
Måns would
like to back me up though? DVD players and other devices
that seek on
mpeg streams generally have _horribly_ crappy behavior under
seeking
and don't seek at all except to chapter boundaries or via
'fast read
and skip decoding of nonkey frames'. I've never seen one
with
seek-to-time, probably because mpeg does not even make
seek-to-time
possible due to meaningless resetting timestamps...
> > > just try:
> > >
> > > Sub: K K
> > > Vid: KFFFFKFF..1hour..KFFFFKFF..1hour..KFFF
> > >
> > > you can either
> > > A. ignore the subs and seek purely based on
the video stream (will not
> > > display subs after seeking)
> > > B. seek to previous keyframe of all streams
(will not allow you to seek
> > > into the 2 hour segment without sub
keyframes
> >
> > Having the same subtitle displayed for 2 hours
duration (or even more
> > than 5-10 seconds duration) is nonsense. If you
meant for the subtitle
> > at the beginning in your example to only be
briefly displayed, then no
> > subs for the next 2 hours, EOR is what allows NUT
to accomplish that!
>
> my example is about a non nut container, and what is
displayed or not
> between the keyframes of the subtitle stream is NOT
known to the
> demuxer (and neither to the nut muxer which should mux
that, unless
> it parses the subtitle stream ...)
I don't think it's unreasonable at all for the muxer to need
to be
passed durations for subtitles as well as starting
timestamps. Without
duration there's no way the demuxer could possibly support
knowing
whether the subtitle is still relevant when seeking. EOR is
just a
clean stream-oriented way to encode duration and prevent
messing up
the back_ptr system.
> > The only other possibilities are to give up on
your correct seeking
> > with subtitles (which you seemed to want the most
of any of us) or
> > throw in thousands of fake empty keyframes.
>
> yes, ~1000 small (<10byte) keyframes whos position
in time matches the video
> keyframes would be the correct solution, needing 10kb
for 2 hours is
> negligible its a mere ~ 0.01 kbit/sec
It's not correct! To do this the muxer has to manufacture
data as
well! It also means seeking will be _incorrect_, in the
sense that if
you disable video and just enable audio and subs, seeks will
go
farther back than they need to in order to find the
_useless_ blank
subtitle.
PLEASE for the love of [insert deity here] stop bringing up
old issues
now; it's too late. It's easy to complain about these things
now 1.5-2
years later when everyone's forgotten why the decisions were
made the
way they were and why they're essential to correct
operation, but that
doesn't mean we should go through the same process again now
only to
rediscover the same thing. :(
Rich
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 05:37:25 |
Rich Felker said:
> On Sat, Nov 25, 2006 at 11:53:16AM +0100, Michael
Niedermayer wrote:
>> Hi
>>
>> On Fri, Nov 24, 2006 at 10:58:20PM -0500, Rich
Felker wrote:
>> > On Sat, Nov 25, 2006 at 12:03:55AM +0100,
Michael Niedermayer wrote:
>> > > [...]
>> > > >
>> > > > > * nut files with EOR cannot be
converted to other containers or more
>> > > > > correctly you cannot seek
correctly in the resulting file
>> > > >
>> > > > Not true.
>> > >
>> > > wait, EOR is "absolutely
needed" and it works in containers which dont have
>> > > EOR, how can both be true?
>> >
>> > Other containers don't support correct seeking
with subtitles unless
>> > they have an index of all subtitles.
>>
>> i dont think this is true, maybe someone who knows
the details about subs
>> in mpeg-ps/ts could clarify but my suspicion is
that there are rules in the
>> relevant specs which ensure that the correct subs
are displayed after
>> seeking, and most other containers which support
subs have an index ...
>
> I'm quite sure mpeg-ps/ts make no provision for this.
The ISO MPEG PS/TS specs do not mention any subtitles. The
DVD and DVB specs
add their own subtitle formats to PS and TS, respectively.
> DVD players and other devices that seek on
> mpeg streams generally have _horribly_ crappy behavior
under seeking
> and don't seek at all except to chapter boundaries or
via 'fast read
> and skip decoding of nonkey frames'. I've never seen
one with
> seek-to-time, probably because mpeg does not even make
seek-to-time
> possible due to meaningless resetting timestamps...
You haven't been looking hard enough then. The DVD metadata
(IFO files)
contains a time to byte offset index, usually with a
granularity of around
2 seconds. This allows for reasonably accurate seeking
without the index
growing very large.
DVB streams are normally broadcast and seeking is
meaningless. DVR devices
usually parse the elementary streams and create an external
index while
recording. The particulars ones I work with even have
frame-accurate
seeking, and continuously variable playback speed, both
forwards and
backwards.
As for timestamp resets, you can't avoid them when
broadcasting 24/7, unless
you have infintely large timestamp fields.
--
Måns Rullgård
mru inprovide.com
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 08:17:45 |
On Sun, Nov 26, 2006 at 05:37:25AM -0000, Måns Rullgård
wrote:
> >> > > > > * nut files with EOR
cannot be converted to other containers or more
> >> > > > > correctly you cannot
seek correctly in the resulting file
> >> > > >
> >> > > > Not true.
> >> > >
> >> > > wait, EOR is "absolutely
needed" and it works in containers which dont have
> >> > > EOR, how can both be true?
> >> >
> >> > Other containers don't support correct
seeking with subtitles unless
> >> > they have an index of all subtitles.
> >>
> >> i dont think this is true, maybe someone who
knows the details about subs
> >> in mpeg-ps/ts could clarify but my suspicion
is that there are rules in the
> >> relevant specs which ensure that the correct
subs are displayed after
> >> seeking, and most other containers which
support subs have an index ...
> >
> > I'm quite sure mpeg-ps/ts make no provision for
this.
>
> The ISO MPEG PS/TS specs do not mention any subtitles.
The DVD and DVB specs
> add their own subtitle formats to PS and TS,
respectively.
Well, do they provide any mechanism to ensure that you have
the
correct subtitle displayed after seeking?
> As for timestamp resets, you can't avoid them when
broadcasting 24/7, unless
> you have infintely large timestamp fields.
64bit is long enough to run without problem until well past
the end of
the solar system... provided you don't choose timebase
idiotically.
Unfortunately I think mpeg uses 33bit or something and also
uses
idiotic timebase.
Rich
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 16:28:28 |
Rich Felker said:
> On Sun, Nov 26, 2006 at 05:37:25AM -0000, Måns
Rullgård wrote:
>> >> > > > > * nut files with EOR
cannot be converted to other containers or more
>> >> > > > > correctly you cannot
seek correctly in the resulting file
>> >> > > >
>> >> > > > Not true.
>> >> > >
>> >> > > wait, EOR is "absolutely
needed" and it works in containers which dont
>> have
>> >> > > EOR, how can both be true?
>> >> >
>> >> > Other containers don't support
correct seeking with subtitles unless
>> >> > they have an index of all subtitles.
>> >>
>> >> i dont think this is true, maybe someone
who knows the details about subs
>> >> in mpeg-ps/ts could clarify but my
suspicion is that there are rules in the
>> >> relevant specs which ensure that the
correct subs are displayed after
>> >> seeking, and most other containers which
support subs have an index ...
>> >
>> > I'm quite sure mpeg-ps/ts make no provision
for this.
>>
>> The ISO MPEG PS/TS specs do not mention any
subtitles. The DVD and DVB specs
>> add their own subtitle formats to PS and TS,
respectively.
>
> Well, do they provide any mechanism to ensure that you
have the
> correct subtitle displayed after seeking?
DVB doesn't care about seeking at all. That is a problem
for recorders to solve
as they see fit. I'm not sure about DVD, and quite frankly,
I don't care. If
the subtitles for the first line of dialog after a seek are
missing, so what?
>> As for timestamp resets, you can't avoid them when
broadcasting 24/7, unless
>> you have infintely large timestamp fields.
>
> 64bit is long enough to run without problem until well
past the end of
> the solar system... provided you don't choose timebase
idiotically.
> Unfortunately I think mpeg uses 33bit or something and
also uses
> idiotic timebase.
Why is the MPEG time base idiotic? 90kHz is nicely
divisible by all the allowed
frame rates.
--
Måns Rullgård
mru inprovide.com
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 17:44:19 |
On Sun, Nov 26, 2006 at 04:28:28PM -0000, Måns Rullgård
wrote:
> > Well, do they provide any mechanism to ensure that
you have the
> > correct subtitle displayed after seeking?
>
> DVB doesn't care about seeking at all. That is a
problem for recorders to solve
> as they see fit. I'm not sure about DVD, and quite
frankly, I don't care. If
> the subtitles for the first line of dialog after a seek
are missing, so what?
Actually users seem to care about this a lot, and it's one
of the
immediately visible-by-stupid-users practical benefits ot
NUT. I
flamed a bit at one time about how insistent Michael was on
it, but
now I'm glad we made the decision we did.
> >> As for timestamp resets, you can't avoid them
when broadcasting 24/7, unless
> >> you have infintely large timestamp fields.
> >
> > 64bit is long enough to run without problem until
well past the end of
> > the solar system... provided you don't choose
timebase idiotically.
> > Unfortunately I think mpeg uses 33bit or something
and also uses
> > idiotic timebase.
>
> Why is the MPEG time base idiotic? 90kHz is nicely
divisible by all the allowed
> frame rates.
Not all of the NTSC ones... The only factors of 90k are 2^4,
3^2, and
5^4. That is, 24000 and 60000 do not divide it. I know
24000/1001 is
legal in mpeg1 and I'm pretty sure 60000/1001 is legal in HD
broadcast..
Rich
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 17:30:28 |
Hi
On Sat, Nov 25, 2006 at 01:38:39PM -0500, Rich Felker wrote:
[...]
>
> > > The only other possibilities are to give up
on your correct seeking
> > > with subtitles (which you seemed to want the
most of any of us) or
> > > throw in thousands of fake empty keyframes.
> >
> > yes, ~1000 small (<10byte) keyframes whos
position in time matches the video
> > keyframes would be the correct solution, needing
10kb for 2 hours is
> > negligible its a mere ~ 0.01 kbit/sec
>
> It's not correct! To do this the muxer has to
manufacture data as
my sugestion was not to make the muxer inject new frames but
rather that
you cannot seek to points where there are no keyframes (this
is pretty much
how things normally behave, ignoring subtitles ...)
with gaps/EOR OTOH its possible to seek to keyframes and
gaps but if so why
disallow it for non subtitle streams?
what extra computations would be needed on the demuxer side
for non subtitle
EOR? (a muxer could always choose not to support EOR)
> well! It also means seeking will be _incorrect_, in the
sense that if
> you disable video and just enable audio and subs, seeks
will go
> farther back than they need to in order to find the
_useless_ blank
> subtitle.
which will cause a few milliseconds of useless computations
after a seek
>
> PLEASE for the love of [insert deity here] stop
bringing up old issues
> now; it's too late. It's easy to complain about these
things now 1.5-2
> years later when everyone's forgotten why the decisions
were made the
> way they were and why they're essential to correct
operation, but that
> doesn't mean we should go through the same process
again now only to
> rediscover the same thing. :(
its a bad sign if you need to think about something for days
to rediscover
why it was needed, it means IMHO the thing is too complex
already or the
case which needs it is pretty obscure or the reasoning hasnt
been
documented, in which case disscussing the issue and
documenting the reasoning
seems like a good idea ...
[...]
--
Michael GnuPG fingerprint:
9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or
copy any book
Today you'd get arrested for mere telling someone where the
library is
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 18:57:54 |
On Sun, Nov 26, 2006 at 06:30:28PM +0100, Michael
Niedermayer wrote:
> Hi
>
> On Sat, Nov 25, 2006 at 01:38:39PM -0500, Rich Felker
wrote:
> [...]
> >
> > > > The only other possibilities are to give
up on your correct seeking
> > > > with subtitles (which you seemed to want
the most of any of us) or
> > > > throw in thousands of fake empty
keyframes.
> > >
> > > yes, ~1000 small (<10byte) keyframes whos
position in time matches the video
> > > keyframes would be the correct solution,
needing 10kb for 2 hours is
> > > negligible its a mere ~ 0.01 kbit/sec
> >
> > It's not correct! To do this the muxer has to
manufacture data as
>
> my sugestion was not to make the muxer inject new
frames but rather that
> you cannot seek to points where there are no keyframes
(this is pretty much
> how things normally behave, ignoring subtitles ...)
Well the result of this is that _someone_ must inject new
frames or
else all movies with subtitles become completely
unseekable...
> with gaps/EOR OTOH its possible to seek to keyframes
and gaps but if so why
> disallow it for non subtitle streams?
> what extra computations would be needed on the demuxer
side for non subtitle
> EOR? (a muxer could always choose not to support EOR)
Nothing whatsoever on the demuxer side. The problem is on
the player
side. The player would either have to be able to either
generate
silence (for audio) or switch to a different sychronization
system...
Anyway the practical difference here is that EOR for
subtitles is
needed to implement in NUT something that is already
existing
practice: movies that do not constantly have a subtitle
displayed. EOR
for audio/video, while it could be nice, is not needed for
any
existing practice, only to add a new capability that did not
exist
before.
> > well! It also means seeking will be _incorrect_,
in the sense that if
> > you disable video and just enable audio and subs,
seeks will go
> > farther back than they need to in order to find
the _useless_ blank
> > subtitle.
>
> which will cause a few milliseconds of useless
computations after a seek
Depends on the behavior of the player, but hopefully yes.
More fundamentally, the principle of "correct
seeking" is violated,
and if we're going to violate that we might as well not have
put so
much effort into ensuring that it works to begin with. You
never cared
much about it but I did...
> > PLEASE for the love of [insert deity here] stop
bringing up old issues
> > now; it's too late. It's easy to complain about
these things now 1.5-2
> > years later when everyone's forgotten why the
decisions were made the
> > way they were and why they're essential to correct
operation, but that
> > doesn't mean we should go through the same process
again now only to
> > rediscover the same thing. :(
>
> its a bad sign if you need to think about something for
days to rediscover
> why it was needed,
If this is the case then all of NUT is a horrible horrible
design. The
point is that it's easy to satisfy all the conditions
required on
muxing and that it's easy to implement a demuxer.
Understanding _why_
all the conditions are necessary was never intended to be
easy, and
IMO it's impossible to make a good set of conditions which
are both
easy to satisfy/interpret AND easy to understand the
motivation
behind. If not impossible, it would take us at least 6 more
years...!
> it means IMHO the thing is too complex already or the
> case which needs it is pretty obscure or the reasoning
hasnt been
> documented, in which case disscussing the issue and
documenting the reasoning
> seems like a good idea ...
OK if someone can come up with a list of
requirements/features/etc. in
NUT that seem unjustified, I will write up detailed
documentation on
what they're needed for. Maybe I'll be wrong and it will be
easy to
understand once I've written this...
Rich
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
| a few things about nut.txt |

|
2006-11-26 20:35:17 |
Hi
On Sun, Nov 26, 2006 at 01:57:54PM -0500, Rich Felker wrote:
[...]
> > > well! It also means seeking will be
_incorrect_, in the sense that if
> > > you disable video and just enable audio and
subs, seeks will go
> > > farther back than they need to in order to
find the _useless_ blank
> > > subtitle.
> >
> > which will cause a few milliseconds of useless
computations after a seek
>
> Depends on the behavior of the player, but hopefully
yes.
>
> More fundamentally, the principle of "correct
seeking" is violated,
> and if we're going to violate that we might as well not
have put so
> much effort into ensuring that it works to begin with.
You never cared
> much about it but I did...
yes
btw, last time i checked 50% of the code in libnuts demuxer
is for seeking
and its O(n) or more precissely it will in some not
unreasonable scenarios
(watch middle to end of movie then watch begin) have to move
O(n) data
around for every demuxed frame, in the cache used for
seeking ...
so IMHO optimal seeking is pretty hard and considering the
amount of code
needed for it i think its not worth it, but its of course
nice if its
possible ...
[...]
> > it means IMHO the thing is too complex already or
the
> > case which needs it is pretty obscure or the
reasoning hasnt been
> > documented, in which case disscussing the issue
and documenting the reasoning
> > seems like a good idea ...
>
> OK if someone can come up with a list of
requirements/features/etc. in
> NUT that seem unjustified, I will write up detailed
documentation on
> what they're needed for. Maybe I'll be wrong and it
will be easy to
> understand once I've written this...
ok, the following is a list of things which i think might
look unjustified
to at least some people (some people actually asked on nut
devel about some
of these) ...
* the dts-pts ordering rule vs. strict dts ordering vs. one
of the previous
with a max latency in a stream header vs. unrestricted
ordering
* EOR
* no info packet compression vs. deflate vs. a fixed table
of strings vs.
a table in the first info packet or main header
* codec_id/fourcc stuff
* single global header vs. several
* lack of timestamp discontinuities
* crcs on frame headers, other headers and length values but
not frames
[...]
--
Michael GnuPG fingerprint:
9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or
copy any book
Today you'd get arrested for mere telling someone where the
library is
_______________________________________________
NUT-devel mailing list
NUT-devel mplayerhq.hu
http://lists.mplayerhq.hu/mailman/listinfo/nut-devel
|
|
|
|