home *** CD-ROM | disk | FTP | other *** search
/ Openstep 4.2 (Developer) / Openstep Developer 4.2.iso / NextLibrary / Frameworks / NEXTIME.framework / Versions / A / Headers / NTSampleBuffer.h < prev    next >
Encoding:
Text File  |  1995-12-22  |  4.4 KB  |  165 lines

  1. #import <Foundation/NSObject.h>
  2. #import <Foundation/NSCoder.h>
  3. #import <Foundation/NSData.h>
  4. #import <Foundation/NSDictionary.h>
  5. /*
  6.  * A class for representing timestamped sample data internally and providing
  7.  * transport over a DO connection.
  8.  *
  9.  * This provides a data encapsulation only.
  10.  *
  11.  */
  12.  
  13. typedef enum
  14. {
  15.     NTSyncSample = 1,
  16.     NTEmptyEditSample = 1 << 30,
  17.     NTEndOfSampleStream = 1 << 31
  18. }
  19. NTSampleFlags;
  20.  
  21. //
  22. // NTMutableSampleBuffer should be a subclass of NTSampleBuffer, and
  23. // a subclass of NSMutableData.  Ah, but that would be multiple inheritance,
  24. // which we all know is a kludge.  Instead, we use protocols to whip up an
  25. // 'inheritance' hierarchy of NTSampleBuffer API, and bind the protocols to
  26. // our NSData and NSMutableData subclasses.  Sort of a template/mixin solution.
  27. //
  28. @protocol NTSampleBuffer <NSObject>
  29. - (unsigned)sampleSize;
  30. - (double)startingTime;
  31. - (double)sampleDuration;
  32. - (unsigned)sampleCount;
  33. - (NSDictionary *)sampleDescription;
  34. - (NTSampleFlags)sampleFlags;
  35. - (int) trackID;
  36. - (unsigned long) sequenceNumber;
  37. @end
  38.  
  39. @protocol NTMutableSampleBuffer <NTSampleBuffer>
  40. - (void)setSampleSize:(unsigned)sampleSize;
  41. - (void)setStartingTime:(double)time;
  42. - (void)setSampleDuration:(double)duration;
  43. - (void)setSampleCount:(unsigned)sampleCount;
  44. - (void)setSampleDescription:(NSDictionary *)description;
  45. - (void)setSampleFlags:(NTSampleFlags)sampleFlags;
  46. - (void) setSequenceNumber:(unsigned long)num;
  47. - (void) setTrackID:(int)id;
  48. - (void) setTimeStampFrom:(id <NTSampleBuffer>)other;
  49. @end
  50.  
  51. @interface NTSampleBuffer: NSData <NSCopying, NSMutableCopying, NSCoding, NTSampleBuffer>
  52. {
  53. @private
  54.     NSData    *        parent;
  55.     unsigned        length;
  56.     const void *        bytes;
  57.     NSDictionary *        sampleDescription;
  58.     double            startingTime;
  59.     double            sampleDuration;
  60.     unsigned        sampleSize;
  61.     unsigned            sampleCount;
  62.     NTSampleFlags        sampleFlags;
  63.     int            trackID;
  64.     unsigned long         sequenceNumber;
  65.     unsigned        refCount;
  66.     void *            _private;
  67. }
  68.  
  69. //
  70. // NSData primitives we must implement
  71. //
  72. - (unsigned)length;
  73. - (const void *)bytes;
  74.  
  75. // Designated initializer
  76. - initSampleWithData        :(NSData *)data
  77.     dataOffset        :(unsigned)offset
  78.     sampleSize        :(unsigned)size
  79.     startingTime        :(double)time
  80.     sampleDuration        :(double)duration
  81.     sampleCount        :(unsigned)count
  82.     sampleDescription    :(NSDictionary *)description
  83.     sampleFlags        :(NTSampleFlags)flags
  84.     trackID            :(int)trackID
  85.     sequenceNumber        :(unsigned long)sequenceNumber;
  86.  
  87. - (BOOL)isEqual:anObject;
  88.  
  89.  
  90. @end
  91.  
  92. //
  93. // Mutable sample buffer
  94. // 
  95. @interface NTMutableSampleBuffer: NSMutableData
  96.         <NSCopying, NSMutableCopying, NSCoding, NTMutableSampleBuffer>
  97. {
  98. @private
  99.     NSMutableData *        parent;
  100.     unsigned        length;
  101.     unsigned        capacity;
  102.     void *            bytes;
  103.     NSDictionary *        sampleDescription;
  104.     double            startingTime;
  105.     double            sampleDuration;
  106.     int            sampleSize;
  107.     int            sampleCount;
  108.     NTSampleFlags        sampleFlags;
  109.     int            trackID;
  110.     unsigned long         sequenceNumber;
  111.     unsigned        refCount;
  112.     BOOL            ownBytes;
  113.     void *            _private;
  114. }
  115. - (void *)mutableBytes;
  116. - (void)setLength:(unsigned int)length;
  117. - (unsigned)length;
  118. - (const void *)bytes;
  119.  
  120. // Designated initializer
  121. - initSampleWithMemory        :(void *) memory    // May be NULL
  122.     capacity        :(unsigned)capacity
  123.     sampleSize        :(unsigned)size
  124.     startingTime        :(double)time
  125.     sampleDuration        :(double)duration
  126.     sampleCount        :(unsigned)count
  127.     sampleDescription    :(NSDictionary *)description
  128.     sampleFlags        :(NTSampleFlags)flags
  129.     trackID            :(int)_trackID
  130.     sequenceNumber        :(unsigned long)_sequenceNumber;
  131.     
  132. - initSampleWithCapacity    :(unsigned)capacity
  133.     sampleSize        :(unsigned)size
  134.     startingTime        :(double)time
  135.     sampleDuration        :(double)duration
  136.     sampleCount        :(unsigned)count
  137.     sampleDescription    :(NSDictionary *)description
  138.     sampleFlags        :(NTSampleFlags)flags
  139.     trackID            :(int)trackID
  140.     sequenceNumber        :(unsigned long)sequenceNumber;
  141.  
  142. - initSampleWithData        :(NSData *)data
  143.     dataOffset        :(unsigned)offset
  144.     sampleSize        :(unsigned)size
  145.     startingTime        :(double)time
  146.     sampleDuration        :(double)duration
  147.     sampleCount        :(unsigned)count
  148.     sampleDescription    :(NSDictionary *)description
  149.     sampleFlags        :(NTSampleFlags)flags
  150.     trackID            :(int)trackID
  151.     sequenceNumber        :(unsigned long)sequenceNumber;
  152.  
  153. - initSampleWithDataNoCopy    :(NSMutableData *)data
  154.     dataOffset        :(unsigned)offset
  155.     sampleSize        :(unsigned)size
  156.     startingTime        :(double)time
  157.     sampleDuration        :(double)duration
  158.     sampleCount        :(unsigned)count
  159.     sampleDescription    :(NSDictionary *)description
  160.     sampleFlags        :(NTSampleFlags)flags
  161.     trackID            :(int)trackID
  162.     sequenceNumber        :(unsigned long)sequenceNumber;
  163.  
  164. @end
  165.