home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 June / ccd0605.iso / LINUX / gopchop-1.1.7.tar.tar / gopchop-1.1.7.tar / gopchop-1.1.7 / TODO < prev   
Text File  |  2005-05-02  |  10KB  |  249 lines

  1.  
  2. GOPchop
  3. -------
  4. The development goals for this project are to produce a stable, complete
  5. tool that does one thing, and does it well.  The 1.0 release established
  6. all of GOPchop's basic functionality.  The development work from 1.0 to
  7. 2.0 will focus on eliminating all flakiness and making it a reliable,
  8. useful tool.
  9.  
  10.  
  11. Development Milestone 14 (Release 1.1.x) - User Interface Upgrade
  12. ========================================
  13. This development series focuses on improving the user interface by
  14. upgrading it to Glade2 and adding other features like Scrollwheel
  15. support, etc.
  16.  
  17.    * (DONE) Save clip info (GOP indexes) for an mpeg (.clips)
  18.    * (DONE) Add option "clip-save report to file" (default=off)
  19.    * (DONE) Add option "remove leading B frames on a spliced open GOPs" (default=yes)
  20.    * (DONE) Incorporate System Header Prepending patch
  21.    * (DONE) Force refresh during "Run"
  22.    * (DONE) Fix up displaying correct frame during a GOP Display or Run
  23.    * (DONE) Thoroughly debug the display code, and add more logic to compensate
  24.      for libmpeg2's picture flushing limitations.
  25.    * (DONE) Set up a 'make check' Makefile target and create an empty
  26.      tests/ directory
  27.    * (DONE) Research into timestamps and why it isn't working
  28.    * (DONE) Use "parseable_items" to populate preferences window
  29.    * Inject nearest sequence header into saved streams
  30.    * Establish Stable Branch 1.2.0 
  31.  
  32.  
  33. Development Milestone 15 (~Release 1.3.x) - Project Organization
  34. =========================================
  35. The 1.3 development series will focus on establishing Open Source style
  36. practices in GOPchop, to enable the community to be more involved in the
  37. maintenance of the software.
  38.  
  39.    * Review and incorporate pending patch bundles
  40.    * Create a list of project "invariants" defining the scope of the
  41.      project 
  42.    * Add option to re-write time-stamps in the resulting MPEG. (based on
  43.      GopFixup) 
  44.    * Load packet information to a text file (.gop) for faster parse times
  45.      (Probably in the patch bundle)
  46.    * detect non-MPEG2-PS files (or rather, detect MPEG1 files quickly)
  47.      (Probably in the patch bundle)
  48.    * Fix for issue with missing sequence headers
  49.      (Probably in the patch bundle)
  50.    * Write an article describing what GOPchop is, and publish it at
  51.      FootNotes (news.gnome.org)
  52.    * Make output streams sane for DVD authoring tools
  53.    * Rename "Run" to "Run Source"
  54.    * Add "Run Clips"
  55.    * Add option to add NAV packets to output stream 
  56.    * Add option to add timestamps so gop_fixup doesn't need to be used
  57.    * Fix plural forms -
  58.      http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 
  59.    * Fix GUI contexts:
  60.      http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
  61.    * Post a call-for-translators to GNOME i18n list
  62.    * Create one simple unit test and hook it up to run with 'make test'
  63.    * Create a rough outline for a "GOPchop Design Specification"
  64.    * Establish Stable Branch 1.4.0
  65.  
  66.  
  67. Development Milestone 16 (~Release 1.5.x) - Parsing Library Upgrade
  68. =========================================
  69. This development series conducts a major upgrade to the underlying MPEG
  70. library, switching to libmpegparse.
  71.  
  72.    * Add libmpegparse as a dependency
  73.    * Create a simple benchmark for testing parser speed
  74.    * Produce a first draft of a "GOPchop Design Specification"
  75.    * Convert internal code over to use libmpegparse
  76.    * Command-line interface for cutting video at specified points without
  77.      using the GUI (see mpgtx?  EDL?)
  78.    * Create a way to spit out .gop files from the command line
  79.    * "run in reverse"
  80.    * Distinguish between Frames and Fields (do I need to?)
  81.    * Figure out how to measure time within spliced GOPs; plan implementing
  82.    * Add configurable option to pipe debug output of parser to a file
  83.    * Add right-click pop-up context menu to Info clist for saving:
  84.      + single GOP as MPEG2-PS file
  85.      + single I-frame as jpg or something
  86.      + audio packets of a GOP as a raw ES stream file
  87.    * Investigate System Header prepending logic
  88.    * Adjust PTS values like the GOP timestamps
  89.    * When loading a file, find the GOP's while loading the packs/videos
  90.    * Write an outline for basic/advanced user guides
  91.    * Create a few regression tests using the new command-line interface
  92.    * Ensure new parser runs faster than old one
  93.    * Establish Stable Branch 1.6.0
  94.  
  95.  
  96. Development Milestone 17 (~~Release 1.7.x) - Productization
  97. ========================================== 
  98. In this milestone, the goal is to establish a foundational set of
  99. materials (tests and documents) that will pave the path to eliminating
  100. remaining bugs.
  101.  
  102.    * Add support for MPEG TS (Transport Stream), to enable editing of
  103.      videos recorded with a DVB card
  104.    * Make load/save dialog remember location after exit
  105.    * Change font in error box header
  106.    * Add time offsets to the clip list, along with GOP number
  107.    * Create little "time" graphic for showing how long clips are in clist
  108.    * Add "1 of 50..." info to Info box for GOP numbers.
  109.    * Figure out how to auto-resize the error message window
  110.    * Issue error when trying to close/exit with clips still in list
  111.    * Issue warning about saving a clip if the final position hasn't been
  112.      saved (i.e., a clip has been "start"ed, but not "finish"ed.)
  113.    * Issue warning when MPEG2-PS format resists GOP closing/splitting
  114.    * Produce a first draft of a "User's Guide"
  115.    * Produce a first draft of an "Advanced Usage Guide"
  116.    * Complete writing "GOPchop Design Specification"
  117.    * Create remaining tests and ensure 'make test' invokes them
  118.    * Establish Stable Branch 1.8.0
  119.  
  120.  
  121. Development Milestone 18 (~~Release 1.9.x) - Testing
  122. ==========================================
  123. In this development series, the goal is to wipe out every last bug.
  124. A hard feature freeze will be imposed.  The goal is to make the 2.0.0
  125. release _never_ crash, and _never_ corrupt a stream it processes.
  126.  
  127.    * Review and incorporate latest patches
  128.    * Find way to suppress repeated error messages
  129.    * Complete writing a "User's Guide"
  130.    * Complete writing an "Advanced Usage Guide"
  131.    * Establish Stable Branch 2.0.0
  132.  
  133.  
  134.  
  135. Future
  136. ======
  137. - have a button to just drop the current GOP number to stdout or
  138.   have it available on the clipboard, or change modes to just
  139.   save marks, or something like that. (Matthias Schniedermeyer's use
  140.   of mkdvd: http://www.haraldmaiss.de/)
  141.  
  142. - have a "last GOP" window while selecting start-frame of a clip
  143.  
  144. - if FILE mtime is greater than .gop mtime, regenerate .gop file?
  145.     - or, option to skip .gop reading (and regenerate)
  146.     - option to save .gop stuff
  147.  
  148. - report audio format (hard)
  149.  
  150. - add "Run Clips"
  151.     - this requires re-vamping the packet-tracking mechanisms so that
  152.       the GOP-type can arbitrarily change information within it's packet
  153.       temporarily.
  154.  
  155. - add "detailed" info section to info window.  For example,
  156.     the clist should start with the "GOP" expanded to show
  157.         Packets
  158.         Pictures
  159.         Audio
  160.     each Packet list can be expanded to show each of the system packets
  161.     each Picture item can be expanded to show each of the video packets
  162.     each Audio item can be expanded to show each of the audio packets
  163.  
  164. - get audio playable.  Maybe figure out a way to link to/control mplayer?
  165.     - this requires having both "seek to byte" and "show only X frames"
  166.       to work from the "slave" mode.  Source to mplayer didn't want
  167.       to do that.
  168.  
  169. - finish weird PES header flag parsers
  170.     - or, optionally, totally skip header flags?  weaker parser, but
  171.       a faster parser maybe?  Or maybe disk will continue to be the
  172.       limiting factor?  Make this a configurable option?
  173.  
  174. - add time offset to scroll bar somewhere.  maybe in a centered box below
  175.   the clip list?
  176.  
  177. - change mmap interface somehow to not require writable files
  178.     - this will be addressed by the private GOP area changes mentioned
  179.       below.
  180.  
  181. - make clip list editable to hand-move start/end markers
  182.     - maybe add a pair of arrow buttons to affect the currently
  183.       selected clip's start and end markers?
  184.  
  185.  
  186. mpegcat
  187. -------
  188. - i18n tagging (mpeg2consts.c too)
  189.  
  190.  
  191. gtkspu
  192. ------
  193. - i18n tagging
  194. - bind arrows, space, and backspace to step forward/back through SPU seqs
  195. - use future "libmpeg2ps" to open an mpg instead of a ".spu"
  196. - get color info from the DVD files
  197.  
  198.  
  199.  
  200.  
  201. Thoughts
  202.  
  203. - I care about:
  204.     - Pack's: they carry SCR: I shouldn't mess with this, they wrap:
  205.       - System packets: they carry rate & bounds
  206.       - VES packets: they define the video stream, and carry:
  207.         - SEQ headers
  208.         - GOP headers
  209.         - Picture headers
  210.       - other packets (audio, stuffing, whatever)
  211.  
  212. I must have a GOP before each I-frame.
  213. I must have (or build) a SEQ header in front of each split, minimally, and
  214.     in front of each GOP maximally.
  215. I must include all AES Packs between GOPs in the prior GOP.
  216. A System Header must follow the first Pack.  All System Headers must be the
  217.         same.
  218.  
  219.  
  220.  
  221. I must build a table of:
  222.  
  223. System header locations, parent Pack, and length (correctable)
  224. GOP header locations, parent Pack, and last seen SEQ
  225. Picture header locations, parent Pack, and last seen GOP
  226. SEQ header locations, and parent Pack
  227. PES packet locations, and length (which must be corrected for dropped frames)
  228. Pack packet locations, and length (which must be corrected for dropped frames)
  229.  
  230. I must re-write:
  231. - GOP "closed" and "broken" flags
  232. - VES to drop open-GOP B-frames following a GOP/I-frame
  233.     - requires they are "exclusively" enclosed in Packs
  234. - packet lengths where I need to
  235.  
  236. I could re-write:
  237. - GOP time codes
  238.  
  239. When I write, I must write Packs.  Any added data (SEQ headers) will be added
  240. either as:
  241. - stand-alone Pack with stand-alone VES packet
  242. - prepended to a VES packet, having both VES and Pack packets' length increased
  243.  
  244. Detect/Deal With "dangerous" situations:
  245. - data from more than one picture in the same Pack (dangerous for dropping
  246.   orphans)
  247. - lack of system header in first saved Pack
  248.  
  249.