| 4672 | } |
| 4673 | |
| 4674 | static int rtpengine_playmedia_f(struct sip_msg* msg, str *flags, |
| 4675 | pv_spec_t *dspec, pv_spec_t *spvar) |
| 4676 | { |
| 4677 | bencode_buffer_t bencbuf; |
| 4678 | bencode_item_t *dict; |
| 4679 | pv_value_t val; |
| 4680 | |
| 4681 | if (set_rtpengine_set_from_avp(msg) == -1) |
| 4682 | return -1; |
| 4683 | |
| 4684 | dict = rtpe_function_call_ok(&bencbuf, msg, OP_START_MEDIA, flags, |
| 4685 | NULL, spvar, NULL, NULL, NULL); |
| 4686 | if (!dict) { |
| 4687 | LM_ERR("could not start media!\n"); |
| 4688 | return -1; |
| 4689 | } |
| 4690 | |
| 4691 | if (dspec) { |
| 4692 | memset(&val, 0, sizeof(pv_value_t)); |
| 4693 | val.flags = PV_TYPE_INT|PV_VAL_INT; |
| 4694 | val.ri = bencode_dictionary_get_integer(dict, "duration", -1); |
| 4695 | if (pv_set_value(msg, dspec, 0, &val) != 0) |
| 4696 | LM_ERR("failed to set media file duration!\n"); |
| 4697 | } |
| 4698 | bencode_buffer_free(&bencbuf); |
| 4699 | return 1; |
| 4700 | } |
| 4701 | |
| 4702 | static int rtpengine_stopmedia_f(struct sip_msg* msg, str *flags, |
| 4703 | pv_spec_t *spvar, pv_spec_t *last_frame_pos) |
nothing calls this directly
no test coverage detected