[NUT-devel] [nut]: r207 - trunk/libnut/libnut.h

ods15 subversion at mplayerhq.hu
Wed Nov 15 11:24:39 CET 2006


Author: ods15
Date: Wed Nov 15 11:24:39 2006
New Revision: 207

Modified:
   trunk/libnut/libnut.h

Log:
update the very obsolete libnut.h comment to some of the new API.
some of it is not true yet.


Modified: trunk/libnut/libnut.h
==============================================================================
--- trunk/libnut/libnut.h	(original)
+++ trunk/libnut/libnut.h	Wed Nov 15 11:24:39 2006
@@ -90,9 +90,9 @@
 typedef struct {
 	char type[7];
 	char name[65];
-	int64_t val;
-	int den;
-	nut_timebase_t tb;
+	int64_t val; // used in all types, is the length of data if there is data
+	int den; // used in type=="r"
+	nut_timebase_t tb; // used in type=="t"
 	uint8_t * data; // must be NULL if carries no data
 } nut_info_field_t;
 
@@ -134,68 +134,47 @@
 void nut_write_info(nut_context_t * nut, const nut_info_packet_t * info);
 
 /** do the same as the above function, but deal with frame reordering */
-void nut_muxer_uninit_reorder(nut_context_t * nut);
 void nut_write_frame_reorder(nut_context_t * nut, const nut_packet_t * p, const uint8_t * buf);
+void nut_muxer_uninit_reorder(nut_context_t * nut);
 
 // Demuxer
 
-/** Just inits stuff, can never fail. */
+/** Just inits stuff, can never fail, except memory error... */
 nut_context_t * nut_demuxer_init(nut_demuxer_opts_t * dopts);
 /** Just frees stuff. */
 void nut_demuxer_uninit(nut_context_t * nut);
 
-/** All these functions return:
+/**
+All of the following functions return:
 0 success
 1 unexpected or expected EOF.
 2 EAGAIN.
 negative number: error, detailed error in nut_error(-1 * ret);
 
-fatality:
-EAGAIN is never fatal
-EOF is always fatal
-negative error is NOT fatal, UNLESS it was given by nut_read_next_packet.
-
-free-ing data malloced by the funtions is only ever needed after a
-successful call. - to protect this, things which should've been malloced will
-turn to NULL.
+All errors except EAGAIN or ERR_NOT_SEEKABLE from nut_seek are fatal.
+The only legal operation after a fatal error is nut_demuxer_uninit().
 
 After an EAGAIN, whichever function returned it should always be
 re-called with same params when data is available.
+*/
 
-nut_read_next_packet should always be called after a negative error.
-
+/** Read headers, must be called at begginning
+Both `s' and `info' are handeled by context, and are illegal pointers
+after nut_demuxer_uninit() . If `info' is NULL, no info is read.
 */
+int nut_read_headers(nut_context_t * nut, nut_stream_header_t * s [], nut_info_packet_t * info []);
 
-/**
- at return information about next packet. pd must be alloced.
-If not skipped, the _appropriate_ function must be called. */
+/** Gives information on next frame, must be called before each packet. */
 int nut_read_next_packet(nut_context_t * nut, nut_packet_t * pd);
 
-/** Unless read_next_packet gives e_eof, skip_packet always works.
-MUST be called after an e_unknown
-len will be non-zero in the case of EAGAIN or EOF
-len is the amount of bytes that are LEFT, not the ones read. */
 int nut_skip_packet(nut_context_t * nut, int * len);
 
-/** Read headers, must be called at begginning
- at brief "s" is malloced and needs to be free'd.
- at brief "info" is malloced and needs to be free'd using nut_free_info() for each packet! can be NULL though.
-*/
-int nut_read_headers(nut_context_t * nut, nut_stream_header_t * s [], nut_info_packet_t * info []);
-
 /** Just reads the frame DATA. all it's header has already been
 read by nut_read_next_packet. buf must be allocated and big enough.
 len will be non-zero in the case of EAGAIN or EOF
 len is the amount of bytes that are LEFT, not the ones read. */
 int nut_read_frame(nut_context_t * nut, int * len, uint8_t * buf);
 
-/** Allocates everything necessary for info. Last info ends just as
-described by spec - 'id = 0'. */
-int nut_read_info(nut_context_t * nut, nut_info_packet_t * info []);
-
-/** must be called for infodata to be freed... */
-void nut_free_info(nut_info_packet_t info []);
-
 /** "Can't find start code" "invalid frame code" "bad checksum" "bleh" */
 const char * nut_error(int error);
 
@@ -211,49 +190,4 @@
 */
 int nut_seek(nut_context_t * nut, double time_pos, int flags, const int * active_streams);
 
-
-/**
-Internal secrets:
-nut_read_next_packet:
-Just about ALL error recovery will be put in nut_read_next_packet.
-It should be called after an error, it should never return an error.
-Only time nut_read_next_packet can return an error is if it can't
-find main headers...
-
-nut_context remembers if headers have been read or not.
-
-If headers have not yet been read:
-1. if the stream starts with "file_id_string", it will be skipped.
-2. if the main headers cannot be found, nut_read_next_packet will
-   start hunting for them.
-
-Once they have been read, nut_read_next_packet will always return
-e_unknown if it sees any header again. (so they will be skipped)
-
-nut_read_next_packet will return EOF if it reachs index_startcode,
-end_startcode or stream EOF.
-
-nut_read_next_packet does handling necessary for new frames
-regarding last_pts, not read_frame.
-
-nut_read_next_packet also does syncpoint handling.
-It'll start hunting syncpoints if no syncpoint has appeared for a
-long time or one of the functions just return a negative error.
-
-Other black magic:
-When nut_read_headers is called, and the stream is seekable, it
-searches for an index
-
-nut_skip_packet works differently according to packet type:
-it either reads forward_ptr and skips by that, or it skips by
-frame data. It also mallocs and frees memory to discard the
-packet if non-seekable or method 0 was chosen.
-
-nut_read_frame is an incredibly trivial function, it just reads
-the actual codec data, that's all. Only errors it could ever give
-is EOF or EAGAIN.
-
-For an example see example.c
-*/
-
 #endif // _NUT_H



More information about the NUT-devel mailing list