TODO.txt 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. This file contains suggestions for things that may be added in future
  2. versions of the library.
  3. A handy command to search for TODO items in the source code is:
  4. grep -r TODO * | grep --invert-match '\.svn' | grep --invert-match tracker | grep --invert-match 'TODO\.txt' | grep --invert-match '~:'
  5. Win64:
  6. Try it out on 64-bit Vista and/or XP Pro with 64-bit Matlab. It
  7. should work fine, even if only a few codecs exist (xvid and wmv3/vc1
  8. might be the only useful ones).
  9. options struct for constructors:
  10. Allow codec params to be supplied as a struct in videoReader,
  11. videoWriter constructors. Counter-argument: this might be a bad idea
  12. because it might be tempting to use @videoWriter/getinfo's output and
  13. forget to change the filename, thus overwriting previous video files.
  14. get/set functions:
  15. Consider making generic @videoReader/get.m and @videoWriter/get.m
  16. functions that work like standard Matlab getters.
  17. codec metadata:
  18. Enhance videoWriter([], 'codecs') to return friendly names and/or other
  19. useful information (at least on Windows). To do so, have
  20. OVideoManager::getcodecs return a
  21. map<CodecName, map<DetailFieldName,DetailFieldValue> >
  22. where CodecName, DetailFieldName, and DetailFieldValue are all strings.
  23. To use the return result on Windows, do something like:
  24. getcodecs()["xvid"]["FriendlyName"] // returns "XviD MPEG-4 Codec" on Win32
  25. get defaults:
  26. Implement a way of getting the default values for videoWriter constructor
  27. parameters. Perhaps the solution is to do the bulk of the parsing in
  28. Matlab and pass a fixed options structure to C++?
  29. colorspaces:
  30. Allow different colorspaces, e.g. YCC and not just RGB. This is useful
  31. if, for example, the user wants to do image processing in the YCC domain
  32. instead of RGB.
  33. seeking precision:
  34. Allow the user to control precise versus fast seeks where applicable when
  35. reading videos. Currently ffmpeg is always precise (is there an API for
  36. fast seeks?) and DirectShow is fast for long and backward seeks but precise
  37. for short forward seeks (less than 5 seconds ahead).
  38. buffering:
  39. Consider doing decoder prefetching by using a background thread to keep
  40. a buffer of the next n decoded frames for videoReader and keeping a
  41. buffer for encoding frames with videoWriter. This should allow much
  42. better throughput on multicore systems. The buffer size should be a
  43. user-settable parameter to the constructor at very least. The user
  44. should also be allowed to revert to the current synchronous mode.
  45. SampleGrabber:
  46. On Windows, it might be worth taking a close look at
  47. [DX9SDK]\Samples\C++\DirectShow\Filters\Grabber\grabber_text.txt
  48. for a different, more powerful method of sample grabbing.
  49. DirectShowPopen2:
  50. Provide a DirectShow plugin where the mex file runs in 64-bit mode but the
  51. server process runs in 32-bit mode. This would allow 64-bit Matlab to take
  52. advantage of 32-bit codecs.
  53. audio:
  54. Add support for audio. This will probably require a lot of extra work.
  55. avifile/xine support:
  56. Recreate avifile plugins for 32-bit Linux. Note that support for avifile
  57. was removed because:
  58. 1) it's hard to build (requires modifying avifile's source code since
  59. it's hard for avifile to stay in sync with ffmpeg API changes)
  60. 2) by now (8 Mar 2007), there are few things that avifile does that
  61. ffmpeg can't do natively.
  62. 3) avifile likes to write to stdout, and this can't be fixed without
  63. modifying the source code (the library initializes itself and prints
  64. logger messages before the user has a chance of disabling the
  65. logger). We could return to the old solution of having
  66. readMessageHeader ignore any text before a valid header, but doing
  67. so makes it more complicated.
  68. Unless there's a really good reason to resurrect the avifile plugin, it
  69. will likely not happen. If ffmpeg proves to not be powerful enough, it
  70. might be better to make a xine plugin. The xine media player's backend
  71. uses a library that looks pretty clean. MPlayer doesn't really have a
  72. clean backend, so wrapping it up would be extremely challenging and
  73. brittle to its frequent code changes.