95                                   const char *challenge)
 
   97     int ch_len = strlen (challenge), i;
 
   98     unsigned char zres[16],
 
   99         buf[64] = { 0xa1, 0xe9, 0x14, 0x9d, 0x0e, 0x6b, 0x3b, 0x59 };
 
  100 #define XOR_TABLE_SIZE 37 
  102         0x05, 0x18, 0x74, 0xd0, 0x0d, 0x09, 0x02, 0x53,
 
  103         0xc0, 0x01, 0x05, 0x05, 0x67, 0x03, 0x19, 0x70,
 
  104         0x08, 0x27, 0x66, 0x10, 0x10, 0x72, 0x08, 0x09,
 
  105         0x63, 0x11, 0x03, 0x71, 0x08, 0x08, 0x70, 0x02,
 
  106         0x10, 0x57, 0x05, 0x18, 0x54 };
 
  111     else if (ch_len > 56)
 
  113     memcpy(buf + 8, challenge, ch_len);
 
  117         buf[8 + i] ^= xor_table[i];
 
  123     strcpy (response + 32, 
"01d0a8e3");
 
  126     for (i = 0; i < 8; i++)
 
  127         chksum[i] = response[i * 4];
 
  155                   NULL, NULL, NULL, NULL);
 
  157     if (tag == 
MKTAG(
'M', 
'L', 
'T', 
'I')) {
 
  162         if (rule_nr < 0 || rule_nr >= num)
 
  191                     int *pset_id, 
int *pseq_no, 
int *pstream_id,
 
  192                     int *pis_keyframe, uint32_t *ptimestamp)
 
  195     int consumed = 0, set_id, seq_no, stream_id, is_keyframe,
 
  196         len_included, need_reliable;
 
  200     while (len >= 5 && buf[1] == 0xFF ) {
 
  203         if (!(buf[0] & 0x80))
 
  280     if (stream_id == 0x1f)
 
  283     if (pset_id)      *pset_id      = set_id;
 
  284     if (pseq_no)      *pseq_no      = seq_no;
 
  285     if (pstream_id)   *pstream_id   = stream_id;
 
  286     if (pis_keyframe) *pis_keyframe = is_keyframe;
 
  287     if (ptimestamp)   *ptimestamp   = timestamp;
 
  307                                   &seq, flags, *timestamp);
 
  313                 memcpy (rdt->
buffer, buf + pos, len - pos);
 
  315                                                     NULL, NULL, NULL, NULL);
 
  329     pkt->
pts = *timestamp;
 
  339     int seq_no, 
flags = 0, stream_id, set_id, is_keyframe;
 
  351                             pkt, ×tamp, NULL, 0, 0, flags);
 
  357     rv = 
ff_rdt_parse_header(buf, len, &set_id, &seq_no, &stream_id, &is_keyframe, ×tamp);
 
  378                          pkt, ×tamp, buf, len, 0, flags);
 
  385                        int stream_nr, 
int rule_nr)
 
  387     av_strlcatf(cmd, size, 
"stream=%d;rule=%d,stream=%d;rule=%d",
 
  388                 stream_nr, rule_nr * 2, stream_nr, rule_nr * 2 + 1);
 
  391 static unsigned char *
 
  394     unsigned char *target;
 
  400     *target_len = len * 3 / 4;
 
  411     const char *p = line;
 
  415     } 
else if (
av_strstart(p, 
"StartTime:integer;", &p))
 
  417     else if (
av_strstart(p, 
"ASMRuleBook:string;", &p)) {
 
  423                 if (first == -1) first = 
n;
 
  426                                            count * 
sizeof(*rdt->
rmst))) < 0) {
 
  447         if (sscanf(p, 
" %*1[Aa]verage%*1[Bb]andwidth=%d", &st->
codec->
bit_rate) == 1)
 
  449         if (!(p = strchr(p, 
',')) || p > end)
 
  462     st->
id = orig_st->
id;
 
  474     int n_rules = 0, odd = 0;
 
  493         if (!(end = strchr(p, 
';')))
 
  495         if (!odd && end != p) {
 
  514     const char *p = line;
 
  539     for (i = 0; i < rdt->
nb_rmst; i++)
 
  551 #define RDT_HANDLER(n, s, t) \ 
  552 static RTPDynamicProtocolHandler rdt_ ## n ## _handler = { \ 
  555     .codec_id         = AV_CODEC_ID_NONE, \ 
  556     .parse_sdp_a_line = rdt_parse_sdp_line, \ 
  557     .alloc            = rdt_new_context, \ 
  558     .free             = rdt_free_context, \ 
  559     .parse_packet     = rdt_parse_packet \