quicktime.h
上传用户:luping1608
上传日期:2007-01-06
资源大小:38k
文件大小:6k
源码类别:

多媒体

开发平台:

Unix_Linux

  1. #ifndef QUICKTIME_H
  2. #define QUICKTIME_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include "private.h"
  9. #include "funcprotos.h"
  10. #include "sizes.h"
  11. // This is the reference for all your library entry points.
  12. // The compression formats are the formats supported natively by Quicktime 4 Linux.
  13. // ===================== compression formats =================== //
  14. // All codecs have a compression format here consisting of the 4 byte 
  15. // compressor tag.
  16. // These tags are used by str routines as well as binary.
  17. #define QUICKTIME_RAW  "raw "
  18. #define QUICKTIME_JPEG "jpeg"
  19. #define QUICKTIME_YUV2 "yuv2"
  20. // Audio formats
  21. // RAW shares the same #define as video
  22. #define QUICKTIME_IMA4 "ima4"
  23. #define QUICKTIME_TWOS "twos"
  24. #define QUICKTIME_ULAW "ulaw"
  25. // =========================== public interface ========================= //
  26. // return 1 if the file is a quicktime file
  27. int quicktime_check_sig(char *path);
  28. // make the quicktime file streamable
  29. int quicktime_make_streamable(char *path);
  30. // call this first to open the file and create all the objects
  31. quicktime_t* quicktime_open(char *filename, int rd, int wr);
  32. // Read all the information about the file.
  33. // Requires a MOOV atom be present in the file.
  34. // If no MOOV atom exists return 1 else return 0.
  35. int quicktime_read_info(quicktime_t *file);
  36. // set up tracks in a new file after opening
  37. // returns the number of quicktime tracks allocated
  38. // audio is stored two channels per quicktime track
  39. int quicktime_set_audio(quicktime_t *file, int channels, long sample_rate, int bits, char *compressor);
  40. // video is stored one layer per quicktime track
  41. int quicktime_set_video(quicktime_t *file, int tracks, int frame_w, int frame_h, float frame_rate, char *compressor);
  42. // routines for setting various video parameters
  43. // should be called after set_video
  44. int quicktime_set_jpeg(quicktime_t *file, int quality, int use_float);
  45. // close the file and delete all the objects
  46. int quicktime_close(quicktime_t *file);
  47. // get length information
  48. // channel numbers start on 1 for audio and video
  49. long quicktime_audio_length(quicktime_t *file, int track);
  50. long quicktime_video_length(quicktime_t *file, int track);
  51. // get position information
  52. long quicktime_audio_position(quicktime_t *file, int track);
  53. long quicktime_video_position(quicktime_t *file, int track);
  54. // get file information
  55. int quicktime_video_tracks(quicktime_t *file);
  56. int quicktime_audio_tracks(quicktime_t *file);
  57. int quicktime_has_audio(quicktime_t *file);
  58. long quicktime_sample_rate(quicktime_t *file, int track);
  59. int quicktime_audio_bits(quicktime_t *file, int track);
  60. int quicktime_track_channels(quicktime_t *file, int track);
  61. char* quicktime_audio_compressor(quicktime_t *file, int track);
  62. int quicktime_has_video(quicktime_t *file);
  63. int quicktime_video_width(quicktime_t *file, int track);
  64. int quicktime_video_height(quicktime_t *file, int track);
  65. float quicktime_frame_rate(quicktime_t *file, int track);
  66. char* quicktime_video_compressor(quicktime_t *file, int track);
  67. // number of bytes of raw data in this frame
  68. long quicktime_frame_size(quicktime_t *file, long frame, int track);
  69. // get the quicktime track and channel that the audio channel belongs to
  70. // channels and tracks start on 0
  71. int quicktime_channel_location(quicktime_t *file, int *quicktime_track, int *quicktime_channel, int channel);
  72. // file positioning
  73. int quicktime_seek_end(quicktime_t *file);
  74. int quicktime_seek_start(quicktime_t *file);
  75. // set position of file descriptor relative to a track
  76. int quicktime_set_audio_position(quicktime_t *file, long sample, int track);
  77. int quicktime_set_video_position(quicktime_t *file, long frame, int track);
  78. // ========================== Access to raw data follows.
  79. // write data for one quicktime track
  80. // the user must handle conversion to the channels in this track
  81. int quicktime_write_audio(quicktime_t *file, char *audio_buffer, long samples, int track);
  82. int quicktime_write_frame(quicktime_t *file, unsigned char *video_buffer, long bytes, int track);
  83. // for writing a frame using a library that needs a file descriptor
  84. int quicktime_write_frame_init(quicktime_t *file, int track); // call before fwrite
  85. FILE* quicktime_get_fd(quicktime_t *file);     // return a file descriptor
  86. int quicktime_write_frame_end(quicktime_t *file, int track); // call after fwrite
  87. // For reading and writing audio to a file descriptor.
  88. int quicktime_write_frame_init(quicktime_t *file, int track); // call before fwrite
  89. int quicktime_write_audio_end(quicktime_t *file, int track, long samples); // call after fwrite
  90. // Read an entire chunk.
  91. // read the number of bytes starting at the byte_start in the specified chunk
  92. // You must provide enough space to store the chunk.
  93. int quicktime_read_chunk(quicktime_t *file, char *output, int track, long chunk, long byte_start, long byte_len);
  94. // read raw data
  95. long quicktime_read_audio(quicktime_t *file, char *audio_buffer, long samples, int track);
  96. long quicktime_read_frame(quicktime_t *file, unsigned char *video_buffer, int track);
  97. // for reading frame using a library that needs a file descriptor
  98. // Frame caching doesn't work here.
  99. int quicktime_read_frame_init(quicktime_t *file, int track);
  100. int quicktime_read_frame_end(quicktime_t *file, int track);
  101. // Attempt to cache all frames for this track in RAM.
  102. // For video tracks only.
  103. // Returns 1 on failure.
  104. int quicktime_cache_frames(quicktime_t *file, int track);
  105. // ===================== Access to built in codecs follows.
  106. // If the codec for this track is supported in the library return 1.
  107. int quicktime_supported_video(quicktime_t *file, int track);
  108. int quicktime_supported_audio(quicktime_t *file, int track);
  109. // Decode or encode the frame into a frame buffer.
  110. // All the frame buffers passed to these functions are unsigned char
  111. // rows with 3 bytes per pixel.  The byte order per 3 byte pixel is
  112. // RGB.
  113. int quicktime_decode_video(quicktime_t *file, unsigned char **row_pointers, int track);
  114. int quicktime_encode_video(quicktime_t *file, unsigned char **row_pointers, int track);
  115. // Decode or encode audio for a single channel into the buffer.
  116. // Pass a buffer for the _i or the _f argument if you want int16 or float data.
  117. // Notice that encoding requires an array of pointers to each channel.
  118. int quicktime_decode_audio(quicktime_t *file, QUICKTIME_INT16 *output_i, float *output_f, long samples, int channel);
  119. int quicktime_encode_audio(quicktime_t *file, QUICKTIME_INT16 **input_i, float **input_f, long samples);
  120. // Dump the file structures for the currently opened file.
  121. int quicktime_dump(quicktime_t *file);
  122. #ifdef __cplusplus
  123. }
  124. #endif
  125. #endif