winlin

for #738, add mp4 demuxer to librtmp

@@ -1545,6 +1545,31 @@ srs_bool srs_h264_startswith_annexb(char* h264_raw_data, int h264_raw_size, int* @@ -1545,6 +1545,31 @@ srs_bool srs_h264_startswith_annexb(char* h264_raw_data, int h264_raw_size, int*
1545 return srs_avc_startswith_annexb(&stream, pnb_start_code); 1545 return srs_avc_startswith_annexb(&stream, pnb_start_code);
1546 } 1546 }
1547 1547
  1548 +struct Mp4Context
  1549 +{
  1550 + SrsFileReader reader;
  1551 +};
  1552 +
  1553 +srs_mp4_t srs_mp4_open_read(const char* file)
  1554 +{
  1555 + int ret = ERROR_SUCCESS;
  1556 +
  1557 + Mp4Context* mp4 = new Mp4Context();
  1558 +
  1559 + if ((ret = mp4->reader.open(file)) != ERROR_SUCCESS) {
  1560 + srs_freep(mp4);
  1561 + return NULL;
  1562 + }
  1563 +
  1564 + return mp4;
  1565 +}
  1566 +
  1567 +void srs_mp4_close(srs_mp4_t mp4)
  1568 +{
  1569 + Mp4Context* context = (Mp4Context*)mp4;
  1570 + srs_freep(context);
  1571 +}
  1572 +
1548 struct FlvContext 1573 struct FlvContext
1549 { 1574 {
1550 SrsFileReader reader; 1575 SrsFileReader reader;
@@ -503,6 +503,17 @@ extern srs_bool srs_h264_startswith_annexb( @@ -503,6 +503,17 @@ extern srs_bool srs_h264_startswith_annexb(
503 ); 503 );
504 504
505 /************************************************************* 505 /*************************************************************
  506 + *************************************************************
  507 + * MP4 muxer and demuxer.
  508 + * @example /trunk/research/librtmp/srs_ingest_mp4.c
  509 + *************************************************************
  510 + *************************************************************/
  511 +typedef void* srs_mp4_t;
  512 +/* Open mp4 file for muxer(write) or demuxer(read). */
  513 +extern srs_mp4_t srs_mp4_open_read(const char* file);
  514 +extern void srs_mp4_close(srs_mp4_t mp4);
  515 +
  516 +/*************************************************************
506 ************************************************************** 517 **************************************************************
507 * flv codec 518 * flv codec
508 * @example /trunk/research/librtmp/srs_flv_injecter.c 519 * @example /trunk/research/librtmp/srs_flv_injecter.c