README
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:3k
源码类别:

DVD

开发平台:

Unix_Linux

  1. This module, dvd_udf, can be used to access DVD Video discs or 
  2. image files in the same format.
  3. The Makefile is more a dummy Makefile, it just compiles the 
  4. two object files. The use of this module is to include it in
  5. a project of your own, e.g. a DVD Video Navigator.
  6. _____________________________________________________________________
  7. How to access UDF
  8. First, you have to open the block device of the disc, or the
  9. image file with UDFOpenDisc(). It returns a positive file
  10. number on success, or -1 on error
  11. Then, you can use UDFFindFile() to search files in the UDF 
  12. directory tree on that disc. Pass the complete, absolute 
  13. filename as parameter.
  14. UDFFindFile() incorporates the process described in part 
  15. 6.9.2 "How to read a UDF disc" of chapter 6.9 "Requirements 
  16. for DVD-ROM" of the OSTA Universal Disk Format Specification, 
  17. Revision 1.02 (www.osta.org) (actually, it spells "Univeral" 
  18. on the first page of their PDF. Obviously since 1995. Check 
  19. it out yourself.)
  20. Another function, UDFReadLB() is provided to access the data 
  21. on the disc. Pass the number of the first block and the amount 
  22. of blocks to read, and a pointer to enough allocated memory
  23. to hold the read data.
  24. simplified example:
  25. #include "dvd_udf.h"
  26. int filenumber;
  27. unsigned long int lbnum;
  28. unsigned char data[DVD_VIDEO_LB_LEN];
  29. if ((filenumber=UDFOpenDisc("/dev/dvd"))>=0) {
  30.   if ((lbnum=UDFFindFile("/VIDEO_TS/VIDEO_TS.IFO"))) {
  31.     if (UDFReadLB(lbnum,1,data)) {
  32.       /* parse first block of VIDEO_TS.IFO in data[] */
  33.     }
  34.   }
  35. }
  36. _____________________________________________________________________
  37. CSS - The DVD Content Scrambling System
  38. The CSS authorisation requires the DVD extension to the 
  39. CD-ROM driver, available for linux from www.kernel.dk
  40. Without this support, an error -2 will be returned by 
  41. all CSS functions.
  42. Receiving an error can also mean, that the DVD disc is 
  43. not CSS encrypted.
  44. Example of a CSS authorisation, requires a licensed DVD decoder:
  45. // CSS key exchange
  46. // disc: 0=disable/bypass, 1=disc key, 2=title key
  47. // lba: logical block address of title
  48. int CSS(int disc, u32 lba) {
  49.   char CSSdata[2048];
  50.   int agid;
  51.   if (!disc) return (DecoderCSSBypass())?-1:0;
  52.   if ((agid=UDFCSSRequestAGID())<0) return -1;
  53.   if (DecoderCSSDriveAuthChallenge((disc==1),CSSdata)) return -1;
  54.   if (UDFCSSDriveAuth(CSSdata)<0) return -1;
  55.   if (DecoderCSSDriveAuthResponse((disc==1),CSSdata)) return -1;
  56.   if (UDFCSSHostAuthChallenge(CSSdata)<0) return -1;
  57.   if (DecoderCSSHostAuth((disc==1),CSSdata)) return -1;
  58.   if (UDFCSSHostAuthResponse(CSSdata)<0) return -1;
  59.   if (disc==1) {
  60.     if (UDFCSSDiscKey(CSSdata)<0) return -1;
  61.     if (DecoderCSSDiscKey(CSSdata)) return -1;
  62.   } else if (disc==2) {
  63.     if (UDFCSSTitleKey(lba,CSSdata)<0) return -1;
  64.     if (DecoderCSSTitleKey(CSSdata)) return -1;
  65.   }
  66.   return 0;
  67. }
  68. _____________________________________________________________________
  69. Version history:
  70. 19991115 (chw)
  71.   Functions UDFReadLB(), UDFFindFile() and UDFOpenDisc() implemented.
  72. 19991124 (chw)
  73.   Added CSS support
  74.   moved _LARGEFILE64_SOURCE from .h into .c (duh!)
  75.   removed stricmp package, using strcasecmp now.
  76.