#include "avformat.h"
#include "mms.h"
#include "internal.h"
#include "avio_internal.h"
#include "libavutil/intreadwrite.h"
#include "libavcodec/bytestream.h"
#include "network.h"
#include "url.h"
Go to the source code of this file.
Data Structures | |
struct | MMSTContext |
Defines | |
#define | LOCAL_ADDRESS 0xc0a80081 |
#define | LOCAL_PORT 1037 |
Enumerations | |
enum | MMSCSPacketType { CS_PKT_INITIAL = 0x01, CS_PKT_PROTOCOL_SELECT = 0x02, CS_PKT_MEDIA_FILE_REQUEST = 0x05, CS_PKT_START_FROM_PKT_ID = 0x07, CS_PKT_STREAM_PAUSE = 0x09, CS_PKT_STREAM_CLOSE = 0x0d, CS_PKT_MEDIA_HEADER_REQUEST = 0x15, CS_PKT_TIMING_DATA_REQUEST = 0x18, CS_PKT_USER_PASSWORD = 0x1a, CS_PKT_KEEPALIVE = 0x1b, CS_PKT_STREAM_ID_REQUEST = 0x33 } |
Client to server packet types. More... | |
enum | MMSSCPacketType { SC_PKT_CLIENT_ACCEPTED = 0x01, SC_PKT_PROTOCOL_ACCEPTED = 0x02, SC_PKT_PROTOCOL_FAILED = 0x03, SC_PKT_MEDIA_PKT_FOLLOWS = 0x05, SC_PKT_MEDIA_FILE_DETAILS = 0x06, SC_PKT_HEADER_REQUEST_ACCEPTED = 0x11, SC_PKT_TIMING_TEST_REPLY = 0x15, SC_PKT_PASSWORD_REQUIRED = 0x1a, SC_PKT_KEEPALIVE = 0x1b, SC_PKT_STREAM_STOPPED = 0x1e, SC_PKT_STREAM_CHANGING = 0x20, SC_PKT_STREAM_ID_ACCEPTED = 0x21, SC_PKT_CANCEL = -1, SC_PKT_NO_DATA = -2, SC_PKT_ASF_HEADER = 0x010000, SC_PKT_ASF_MEDIA = 0x010001 } |
Server to client packet types. More... | |
Functions | |
static void | start_command_packet (MMSTContext *mmst, MMSCSPacketType packet_type) |
Create MMST command packet header. | |
static void | insert_command_prefixes (MMSContext *mms, uint32_t prefix1, uint32_t prefix2) |
Add prefixes to MMST command packet. | |
static int | send_command_packet (MMSTContext *mmst) |
Send a prepared MMST command packet. | |
static void | mms_put_utf16 (MMSContext *mms, const uint8_t *src) |
static int | send_time_test_data (MMSTContext *mmst) |
static int | send_protocol_select (MMSTContext *mmst) |
static int | send_media_file_request (MMSTContext *mmst) |
static void | handle_packet_stream_changing_type (MMSTContext *mmst) |
static int | send_keepalive_packet (MMSTContext *mmst) |
static void | pad_media_packet (MMSContext *mms) |
Pad media packets smaller than max_packet_size and/or adjust read position after a seek. | |
static MMSSCPacketType | get_tcp_server_response (MMSTContext *mmst) |
Read incoming MMST media, header or command packet. | |
static int | mms_safe_send_recv (MMSTContext *mmst, int(*send_fun)(MMSTContext *mmst), const MMSSCPacketType expect_type) |
static int | send_media_header_request (MMSTContext *mmst) |
static int | send_startup_packet (MMSTContext *mmst) |
Send the initial handshake. | |
static int | send_stream_selection_request (MMSTContext *mmst) |
Send MMST stream selection command based on the AVStream->discard values. | |
static int | send_close_packet (MMSTContext *mmst) |
static int | mms_close (URLContext *h) |
Close the MMSH/MMST connection. | |
static int | send_media_packet_request (MMSTContext *mmst) |
static void | clear_stream_buffers (MMSContext *mms) |
static int | mms_open (URLContext *h, const char *uri, int flags) |
static int | mms_read (URLContext *h, uint8_t *buf, int size) |
Read ASF data through the protocol. | |
Variables | |
URLProtocol | ff_mmst_protocol |
#define LOCAL_ADDRESS 0xc0a80081 |
#define LOCAL_PORT 1037 |
enum MMSCSPacketType |
enum MMSSCPacketType |
Server to client packet types.
static void clear_stream_buffers | ( | MMSContext * | mms | ) | [static] |
static MMSSCPacketType get_tcp_server_response | ( | MMSTContext * | mmst | ) | [static] |
Read incoming MMST media, header or command packet.
Definition at line 238 of file mmst.c.
Referenced by mms_safe_send_recv().
static void handle_packet_stream_changing_type | ( | MMSTContext * | mmst | ) | [static] |
static void insert_command_prefixes | ( | MMSContext * | mms, | |
uint32_t | prefix1, | |||
uint32_t | prefix2 | |||
) | [static] |
Add prefixes to MMST command packet.
Definition at line 118 of file mmst.c.
Referenced by send_close_packet(), send_keepalive_packet(), send_media_file_request(), send_media_header_request(), send_media_packet_request(), send_protocol_select(), send_startup_packet(), and send_time_test_data().
static int mms_close | ( | URLContext * | h | ) | [static] |
static int mms_open | ( | URLContext * | h, | |
const char * | uri, | |||
int | flags | |||
) | [static] |
static void mms_put_utf16 | ( | MMSContext * | mms, | |
const uint8_t * | src | |||
) | [static] |
Definition at line 155 of file mmst.c.
Referenced by send_media_file_request(), send_protocol_select(), and send_startup_packet().
static int mms_read | ( | URLContext * | h, | |
uint8_t * | buf, | |||
int | size | |||
) | [static] |
static int mms_safe_send_recv | ( | MMSTContext * | mmst, | |
int(*)(MMSTContext *mmst) | send_fun, | |||
const MMSSCPacketType | expect_type | |||
) | [static] |
static void pad_media_packet | ( | MMSContext * | mms | ) | [static] |
Pad media packets smaller than max_packet_size and/or adjust read position after a seek.
Definition at line 228 of file mmst.c.
Referenced by get_tcp_server_response().
static int send_close_packet | ( | MMSTContext * | mmst | ) | [static] |
static int send_command_packet | ( | MMSTContext * | mmst | ) | [static] |
Send a prepared MMST command packet.
Definition at line 126 of file mmst.c.
Referenced by send_close_packet(), send_keepalive_packet(), send_media_file_request(), send_media_header_request(), send_media_packet_request(), send_protocol_select(), send_startup_packet(), send_stream_selection_request(), and send_time_test_data().
static int send_keepalive_packet | ( | MMSTContext * | mmst | ) | [static] |
static int send_media_file_request | ( | MMSTContext * | mmst | ) | [static] |
static int send_media_header_request | ( | MMSTContext * | mmst | ) | [static] |
static int send_media_packet_request | ( | MMSTContext * | mmst | ) | [static] |
static int send_protocol_select | ( | MMSTContext * | mmst | ) | [static] |
static int send_startup_packet | ( | MMSTContext * | mmst | ) | [static] |
static int send_stream_selection_request | ( | MMSTContext * | mmst | ) | [static] |
Send MMST stream selection command based on the AVStream->discard values.
Definition at line 437 of file mmst.c.
Referenced by mms_open().
static int send_time_test_data | ( | MMSTContext * | mmst | ) | [static] |
static void start_command_packet | ( | MMSTContext * | mmst, | |
MMSCSPacketType | packet_type | |||
) | [static] |
Create MMST command packet header.
Definition at line 100 of file mmst.c.
Referenced by send_close_packet(), send_keepalive_packet(), send_media_file_request(), send_media_header_request(), send_media_packet_request(), send_protocol_select(), send_startup_packet(), send_stream_selection_request(), and send_time_test_data().
Initial value:
{ .name = "mmst", .url_open = mms_open, .url_read = mms_read, .url_close = mms_close, .priv_data_size = sizeof(MMSTContext), .flags = URL_PROTOCOL_FLAG_NETWORK, }