[NUT-devel] Welcome...
Oded Shimon
ods15 at ods15.dyndns.org
Sun Feb 12 06:45:54 CET 2006
On Sat, Feb 11, 2006 at 11:23:09PM -0500, Rich Felker wrote:
> On Sat, Feb 11, 2006 at 09:41:41PM +0200, Oded Shimon wrote:
> > On to buisness... Spec:
> >
> > 1. Split index
> > The only big problem I see is deciding where to split it, and I doubt if
> > even libnut will support this. It's also weird in regards to index_ptr. I
> > vote against this... If it's local storage, you probably have a big damage
> > chunk, not a single byte one...
>
> I'm against split-index. It's unnecessary complication to protect
> _redundant_ data. The index contains no information of it's own, it's
> all derived data stored in a common place for easy access. In the case
> of a file with corruption in the index, you can just build a new index
> if you really need one. IMO if just the index is damaged, you should
> be _glad_ that the damage was isolated to the index and either rebuild
> it or be happy with slightly slow seeking.
My thoughts as well on the issue... Ugly complication.
> > 4. make 'N' implicit in frame codes (as in, no need to explicit specify it
> > is invalid)
>
> Agree.
Patch. Can I commit...
On Sun, Feb 12, 2006 at 12:51:51AM +0100, Michael Niedermayer wrote:
> On Sat, Feb 11, 2006 at 09:41:41PM +0200, Oded Shimon wrote:
> > 1. Split index
> > The only big problem I see is deciding where to split it, and I doubt if
> > even libnut will support this. It's also weird in regards to index_ptr. I
> > vote against this... If it's local storage, you probably have a big damage
> > chunk, not a single byte one...
>
> you dont need a single byte error for this to be usefull, if you loose 10kb
> in one chunk of a 100kb index you really want to be able to recover as much
> of the 90kb as you can ...
10kb of damage without another 2mb of damage in that whole area is highly
unlikely... Especially with local storage...
> > 2. Frame repetition
> > Well, is there anything to really do about this? I can't think of any way a
> > flag would be useful to the demuxer or player, you can just repeat the
> > frame as is, maybe let the codec layer deal with it.
>
> well, i dont care strongly about that, if you are against it fine then
> repeated frame == (keyframe && binary identical to last), it means 1
> compare pass more for the demuxer if it wants to discard them (like when
> storing a network stream on reliable media)
Ok, issue closed...
> > Anything else? These are truely the last issues I'm aware of, as far as I'm
> > concerned we can (finally) finalize spec... If anybody has anything, say it
> > now...
>
> something crazy :)
> ive already suggested it long ago and its probably a stupid idea but it might
> mean big reduction of overhead and iam very curious how much space we could
> save with it ...
>
> give each stream 2 byte sequences in the stream header
> (like codec_specific_data), one for keyframes one for non-key frames, then
> for each frame, put the correspong byte sequence before the frame before
> outputing it from the demuxer :)
It's weird.. It's the codec's job, not the container... Do we put it before
ALL frames in the stream or add another stream flag (or nut flag?).
Anyway, I suspect your savings will be about as much as your loss by adding
checksums to syncpoints... I don't really consider it reduction in
overhead, more like compression of data... I'm assuming you're refferring
to silly mp3 and mpeg-4 startcodes?...
- ods15
-------------- next part --------------
Index: DOCS/tech/mpcf.txt
===================================================================
RCS file: /cvsroot/mplayer/main/DOCS/tech/mpcf.txt,v
retrieving revision 1.103
diff -u -r1.103 mpcf.txt
--- DOCS/tech/mpcf.txt 11 Feb 2006 09:56:49 -0000 1.103
+++ DOCS/tech/mpcf.txt 12 Feb 2006 05:30:11 -0000
@@ -151,6 +151,11 @@
tmp_reserved[i] v
}
for(j=0; j<count && i<256; j++, i++){
+ if (i == 'N') {
+ flags[i]= 4;
+ j--;
+ continue;
+ }
flags[i]= tmp_flag;
stream_flags[i]= tmp_sflag;
stream_id_plus1[i]= tmp_stream;
@@ -469,8 +474,6 @@
2 more_flags if set, stream control flags are at frame header.
4 invalid if set, frame_code is invalid.
- frame_code=78 ('N') MUST have flags=64
-
stream_flags
stream_flags is "stream_flags[frame_code] ^ coded_stream_flags"
More information about the NUT-devel
mailing list