.. _pepper_dev_c_index:
.. _c-api-dev:

.. DO NOT EDIT! This document is auto-generated by doxygen/rst_index.py.

##########################################
Pepper C API Reference (Dev)
##########################################

This page lists the C API for Pepper 50. Apps that use this API can
run in Chrome 50 or higher.

`Interfaces <pepper_dev/c/group___interfaces.html>`__
=============================================================
  * `PPB_Audio <pepper_dev/c/struct_p_p_b___audio__1__1.html>`__

  * `PPB_AudioBuffer <pepper_dev/c/struct_p_p_b___audio_buffer__0__1.html>`__

  * `PPB_AudioConfig <pepper_dev/c/struct_p_p_b___audio_config__1__1.html>`__

  * `PPB_AudioEncoder <pepper_dev/c/struct_p_p_b___audio_encoder__0__1.html>`__

  * `PPB_Compositor <pepper_dev/c/struct_p_p_b___compositor__0__1.html>`__

  * `PPB_CompositorLayer <pepper_dev/c/struct_p_p_b___compositor_layer__0__2.html>`__

  * `PPB_Console <pepper_dev/c/struct_p_p_b___console__1__0.html>`__

  * `PPB_Core <pepper_dev/c/struct_p_p_b___core__1__0.html>`__

  * `PPB_FileIO <pepper_dev/c/struct_p_p_b___file_i_o__1__1.html>`__

  * `PPB_FileRef <pepper_dev/c/struct_p_p_b___file_ref__1__2.html>`__

  * `PPB_FileSystem <pepper_dev/c/struct_p_p_b___file_system__1__0.html>`__

  * `PPB_Fullscreen <pepper_dev/c/struct_p_p_b___fullscreen__1__0.html>`__

  * `PPB_Gamepad <pepper_dev/c/struct_p_p_b___gamepad__1__0.html>`__

  * `PPB_Graphics2D <pepper_dev/c/struct_p_p_b___graphics2_d__1__1.html>`__

  * `PPB_Graphics3D <pepper_dev/c/struct_p_p_b___graphics3_d__1__0.html>`__

  * `PPB_HostResolver <pepper_dev/c/struct_p_p_b___host_resolver__1__0.html>`__

  * `PPB_IMEInputEvent <pepper_dev/c/struct_p_p_b___i_m_e_input_event__1__0.html>`__

  * `PPB_ImageData <pepper_dev/c/struct_p_p_b___image_data__1__0.html>`__

  * `PPB_InputEvent <pepper_dev/c/struct_p_p_b___input_event__1__0.html>`__

  * `PPB_Instance <pepper_dev/c/struct_p_p_b___instance__1__0.html>`__

  * `PPB_KeyboardInputEvent <pepper_dev/c/struct_p_p_b___keyboard_input_event__1__2.html>`__

  * `PPB_MediaStreamAudioTrack <pepper_dev/c/struct_p_p_b___media_stream_audio_track__0__1.html>`__

  * `PPB_MediaStreamVideoTrack <pepper_dev/c/struct_p_p_b___media_stream_video_track__1__0.html>`__

  * `PPB_MessageLoop <pepper_dev/c/struct_p_p_b___message_loop__1__0.html>`__

  * `PPB_Messaging <pepper_dev/c/struct_p_p_b___messaging__1__2.html>`__

  * `PPB_MouseCursor <pepper_dev/c/struct_p_p_b___mouse_cursor__1__0.html>`__

  * `PPB_MouseInputEvent <pepper_dev/c/struct_p_p_b___mouse_input_event__1__1.html>`__

  * `PPB_MouseLock <pepper_dev/c/struct_p_p_b___mouse_lock__1__0.html>`__

  * `PPB_NetAddress <pepper_dev/c/struct_p_p_b___net_address__1__0.html>`__

  * `PPB_NetworkList <pepper_dev/c/struct_p_p_b___network_list__1__0.html>`__

  * `PPB_NetworkMonitor <pepper_dev/c/struct_p_p_b___network_monitor__1__0.html>`__

  * `PPB_NetworkProxy <pepper_dev/c/struct_p_p_b___network_proxy__1__0.html>`__

  * `PPB_OpenGLES2 <pepper_dev/c/struct_p_p_b___open_g_l_e_s2.html>`__

  * `PPB_OpenGLES2 <pepper_dev/c/struct_p_p_b___open_g_l_e_s2__1__0.html>`__

  * `PPB_OpenGLES2ChromiumEnableFeature <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_chromium_enable_feature.html>`__

  * `PPB_OpenGLES2ChromiumEnableFeature <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_chromium_enable_feature__1__0.html>`__

  * `PPB_OpenGLES2ChromiumMapSub <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_chromium_map_sub.html>`__

  * `PPB_OpenGLES2ChromiumMapSub <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_chromium_map_sub__1__0.html>`__

  * `PPB_OpenGLES2FramebufferBlit <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_framebuffer_blit.html>`__

  * `PPB_OpenGLES2FramebufferBlit <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_framebuffer_blit__1__0.html>`__

  * `PPB_OpenGLES2FramebufferMultisample <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_framebuffer_multisample.html>`__

  * `PPB_OpenGLES2FramebufferMultisample <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_framebuffer_multisample__1__0.html>`__

  * `PPB_OpenGLES2InstancedArrays <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_instanced_arrays.html>`__

  * `PPB_OpenGLES2InstancedArrays <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_instanced_arrays__1__0.html>`__

  * `PPB_OpenGLES2Query <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_query.html>`__

  * `PPB_OpenGLES2Query <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_query__1__0.html>`__

  * `PPB_OpenGLES2VertexArrayObject <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_vertex_array_object.html>`__

  * `PPB_OpenGLES2VertexArrayObject <pepper_dev/c/struct_p_p_b___open_g_l_e_s2_vertex_array_object__1__0.html>`__

  * `PPB_TCPSocket <pepper_dev/c/struct_p_p_b___t_c_p_socket__1__2.html>`__

  * `PPB_TextInputController <pepper_dev/c/struct_p_p_b___text_input_controller__1__0.html>`__

  * `PPB_TouchInputEvent <pepper_dev/c/struct_p_p_b___touch_input_event__1__0.html>`__

  * `PPB_UDPSocket <pepper_dev/c/struct_p_p_b___u_d_p_socket__1__2.html>`__

  * `PPB_URLLoader <pepper_dev/c/struct_p_p_b___u_r_l_loader__1__0.html>`__

  * `PPB_URLRequestInfo <pepper_dev/c/struct_p_p_b___u_r_l_request_info__1__0.html>`__

  * `PPB_URLResponseInfo <pepper_dev/c/struct_p_p_b___u_r_l_response_info__1__0.html>`__

  * `PPB_Var <pepper_dev/c/struct_p_p_b___var__1__2.html>`__

  * `PPB_VarArray <pepper_dev/c/struct_p_p_b___var_array__1__0.html>`__

  * `PPB_VarArrayBuffer <pepper_dev/c/struct_p_p_b___var_array_buffer__1__0.html>`__

  * `PPB_VarDictionary <pepper_dev/c/struct_p_p_b___var_dictionary__1__0.html>`__

  * `PPB_VideoDecoder <pepper_dev/c/struct_p_p_b___video_decoder__1__1.html>`__

  * `PPB_VideoEncoder <pepper_dev/c/struct_p_p_b___video_encoder__0__2.html>`__

  * `PPB_VideoFrame <pepper_dev/c/struct_p_p_b___video_frame__0__1.html>`__

  * `PPB_View <pepper_dev/c/struct_p_p_b___view__1__2.html>`__

  * `PPB_WebSocket <pepper_dev/c/struct_p_p_b___web_socket__1__0.html>`__

  * `PPB_WheelInputEvent <pepper_dev/c/struct_p_p_b___wheel_input_event__1__0.html>`__

  * `PPP_Graphics3D <pepper_dev/c/struct_p_p_p___graphics3_d__1__0.html>`__

  * `PPP_InputEvent <pepper_dev/c/struct_p_p_p___input_event__0__1.html>`__

  * `PPP_Instance <pepper_dev/c/struct_p_p_p___instance__1__1.html>`__

  * `PPP_MessageHandler <pepper_dev/c/struct_p_p_p___message_handler__0__2.html>`__

  * `PPP_Messaging <pepper_dev/c/struct_p_p_p___messaging__1__0.html>`__

  * `PPP_MouseLock <pepper_dev/c/struct_p_p_p___mouse_lock__1__0.html>`__


`Structures <pepper_dev/c/group___structs.html>`__
==========================================================
  * `PP_ArrayOutput <pepper_dev/c/struct_p_p___array_output.html>`__

  * `PP_AudioBitstreamBuffer <pepper_dev/c/struct_p_p___audio_bitstream_buffer.html>`__

  * `PP_AudioProfileDescription <pepper_dev/c/struct_p_p___audio_profile_description.html>`__

  * `PP_BitstreamBuffer <pepper_dev/c/struct_p_p___bitstream_buffer.html>`__

  * `PP_CompletionCallback <pepper_dev/c/struct_p_p___completion_callback.html>`__

  * `PP_DirectoryEntry <pepper_dev/c/struct_p_p___directory_entry.html>`__

  * `PP_FileInfo <pepper_dev/c/struct_p_p___file_info.html>`__

  * `PP_FloatPoint <pepper_dev/c/struct_p_p___float_point.html>`__

  * `PP_FloatRect <pepper_dev/c/struct_p_p___float_rect.html>`__

  * `PP_FloatSize <pepper_dev/c/struct_p_p___float_size.html>`__

  * `PP_GamepadSampleData <pepper_dev/c/struct_p_p___gamepad_sample_data.html>`__

  * `PP_GamepadsSampleData <pepper_dev/c/struct_p_p___gamepads_sample_data.html>`__

  * `PP_HostResolver_Hint <pepper_dev/c/struct_p_p___host_resolver___hint.html>`__

  * `PP_ImageDataDesc <pepper_dev/c/struct_p_p___image_data_desc.html>`__

  * `PP_InputEvent_Character <pepper_dev/c/struct_p_p___input_event___character.html>`__

  * `PP_InputEvent_Key <pepper_dev/c/struct_p_p___input_event___key.html>`__

  * `PP_InputEvent_Mouse <pepper_dev/c/struct_p_p___input_event___mouse.html>`__

  * `PP_InputEvent_Wheel <pepper_dev/c/struct_p_p___input_event___wheel.html>`__

  * `PP_NetAddress_IPv4 <pepper_dev/c/struct_p_p___net_address___i_pv4.html>`__

  * `PP_NetAddress_IPv6 <pepper_dev/c/struct_p_p___net_address___i_pv6.html>`__

  * `PP_Point <pepper_dev/c/struct_p_p___point.html>`__

  * `PP_Rect <pepper_dev/c/struct_p_p___rect.html>`__

  * `PP_Size <pepper_dev/c/struct_p_p___size.html>`__

  * `PP_TouchPoint <pepper_dev/c/struct_p_p___touch_point.html>`__

  * `PP_Var <pepper_dev/c/struct_p_p___var.html>`__

  * `PP_VideoPicture <pepper_dev/c/struct_p_p___video_picture.html>`__

  * `PP_VideoPicture <pepper_dev/c/struct_p_p___video_picture__0__1.html>`__

  * `PP_VideoProfileDescription <pepper_dev/c/struct_p_p___video_profile_description.html>`__

  * `PP_VideoProfileDescription <pepper_dev/c/struct_p_p___video_profile_description__0__1.html>`__

  * `PP_VarValue <pepper_dev/c/union_p_p___var_value.html>`__


`Functions <pepper_dev/c/group___functions.html>`__
===========================================================

`Enums <pepper_dev/c/group___enums.html>`__
===================================================

`Typedefs <pepper_dev/c/group___typedefs.html>`__
=========================================================

`Macros <pepper_dev/c/globals_defs.html>`__
===================================================

Files
=====
  * `pp_array_output.h <pepper_dev/c/pp__array__output_8h.html>`__

  * `pp_bool.h <pepper_dev/c/pp__bool_8h.html>`__

  * `pp_codecs.h <pepper_dev/c/pp__codecs_8h.html>`__

  * `pp_completion_callback.h <pepper_dev/c/pp__completion__callback_8h.html>`__

  * `pp_directory_entry.h <pepper_dev/c/pp__directory__entry_8h.html>`__

  * `pp_errors.h <pepper_dev/c/pp__errors_8h.html>`__

  * `pp_file_info.h <pepper_dev/c/pp__file__info_8h.html>`__

  * `pp_graphics_3d.h <pepper_dev/c/pp__graphics__3d_8h.html>`__

  * `pp_input_event.h <pepper_dev/c/pp__input__event_8h.html>`__

  * `pp_instance.h <pepper_dev/c/pp__instance_8h.html>`__

  * `pp_module.h <pepper_dev/c/pp__module_8h.html>`__

  * `pp_point.h <pepper_dev/c/pp__point_8h.html>`__

  * `pp_rect.h <pepper_dev/c/pp__rect_8h.html>`__

  * `pp_resource.h <pepper_dev/c/pp__resource_8h.html>`__

  * `pp_size.h <pepper_dev/c/pp__size_8h.html>`__

  * `pp_stdint.h <pepper_dev/c/pp__stdint_8h.html>`__

  * `pp_time.h <pepper_dev/c/pp__time_8h.html>`__

  * `pp_touch_point.h <pepper_dev/c/pp__touch__point_8h.html>`__

  * `pp_var.h <pepper_dev/c/pp__var_8h.html>`__

  * `ppb.h <pepper_dev/c/ppb_8h.html>`__

  * `ppb_audio.h <pepper_dev/c/ppb__audio_8h.html>`__

  * `ppb_audio_buffer.h <pepper_dev/c/ppb__audio__buffer_8h.html>`__

  * `ppb_audio_config.h <pepper_dev/c/ppb__audio__config_8h.html>`__

  * `ppb_audio_encoder.h <pepper_dev/c/ppb__audio__encoder_8h.html>`__

  * `ppb_compositor.h <pepper_dev/c/ppb__compositor_8h.html>`__

  * `ppb_compositor_layer.h <pepper_dev/c/ppb__compositor__layer_8h.html>`__

  * `ppb_console.h <pepper_dev/c/ppb__console_8h.html>`__

  * `ppb_core.h <pepper_dev/c/ppb__core_8h.html>`__

  * `ppb_file_io.h <pepper_dev/c/ppb__file__io_8h.html>`__

  * `ppb_file_ref.h <pepper_dev/c/ppb__file__ref_8h.html>`__

  * `ppb_file_system.h <pepper_dev/c/ppb__file__system_8h.html>`__

  * `ppb_fullscreen.h <pepper_dev/c/ppb__fullscreen_8h.html>`__

  * `ppb_gamepad.h <pepper_dev/c/ppb__gamepad_8h.html>`__

  * `ppb_graphics_2d.h <pepper_dev/c/ppb__graphics__2d_8h.html>`__

  * `ppb_graphics_3d.h <pepper_dev/c/ppb__graphics__3d_8h.html>`__

  * `ppb_host_resolver.h <pepper_dev/c/ppb__host__resolver_8h.html>`__

  * `ppb_image_data.h <pepper_dev/c/ppb__image__data_8h.html>`__

  * `ppb_input_event.h <pepper_dev/c/ppb__input__event_8h.html>`__

  * `ppb_instance.h <pepper_dev/c/ppb__instance_8h.html>`__

  * `ppb_media_stream_audio_track.h <pepper_dev/c/ppb__media__stream__audio__track_8h.html>`__

  * `ppb_media_stream_video_track.h <pepper_dev/c/ppb__media__stream__video__track_8h.html>`__

  * `ppb_message_loop.h <pepper_dev/c/ppb__message__loop_8h.html>`__

  * `ppb_messaging.h <pepper_dev/c/ppb__messaging_8h.html>`__

  * `ppb_mouse_cursor.h <pepper_dev/c/ppb__mouse__cursor_8h.html>`__

  * `ppb_mouse_lock.h <pepper_dev/c/ppb__mouse__lock_8h.html>`__

  * `ppb_net_address.h <pepper_dev/c/ppb__net__address_8h.html>`__

  * `ppb_network_list.h <pepper_dev/c/ppb__network__list_8h.html>`__

  * `ppb_network_monitor.h <pepper_dev/c/ppb__network__monitor_8h.html>`__

  * `ppb_network_proxy.h <pepper_dev/c/ppb__network__proxy_8h.html>`__

  * `ppb_opengles2.h <pepper_dev/c/ppb__opengles2_8h.html>`__

  * `ppb_tcp_socket.h <pepper_dev/c/ppb__tcp__socket_8h.html>`__

  * `ppb_text_input_controller.h <pepper_dev/c/ppb__text__input__controller_8h.html>`__

  * `ppb_udp_socket.h <pepper_dev/c/ppb__udp__socket_8h.html>`__

  * `ppb_url_loader.h <pepper_dev/c/ppb__url__loader_8h.html>`__

  * `ppb_url_request_info.h <pepper_dev/c/ppb__url__request__info_8h.html>`__

  * `ppb_url_response_info.h <pepper_dev/c/ppb__url__response__info_8h.html>`__

  * `ppb_var.h <pepper_dev/c/ppb__var_8h.html>`__

  * `ppb_var_array.h <pepper_dev/c/ppb__var__array_8h.html>`__

  * `ppb_var_array_buffer.h <pepper_dev/c/ppb__var__array__buffer_8h.html>`__

  * `ppb_var_dictionary.h <pepper_dev/c/ppb__var__dictionary_8h.html>`__

  * `ppb_video_decoder.h <pepper_dev/c/ppb__video__decoder_8h.html>`__

  * `ppb_video_encoder.h <pepper_dev/c/ppb__video__encoder_8h.html>`__

  * `ppb_video_frame.h <pepper_dev/c/ppb__video__frame_8h.html>`__

  * `ppb_view.h <pepper_dev/c/ppb__view_8h.html>`__

  * `ppb_websocket.h <pepper_dev/c/ppb__websocket_8h.html>`__

  * `ppp.h <pepper_dev/c/ppp_8h.html>`__

  * `ppp_graphics_3d.h <pepper_dev/c/ppp__graphics__3d_8h.html>`__

  * `ppp_input_event.h <pepper_dev/c/ppp__input__event_8h.html>`__

  * `ppp_instance.h <pepper_dev/c/ppp__instance_8h.html>`__

  * `ppp_message_handler.h <pepper_dev/c/ppp__message__handler_8h.html>`__

  * `ppp_messaging.h <pepper_dev/c/ppp__messaging_8h.html>`__

  * `ppp_mouse_lock.h <pepper_dev/c/ppp__mouse__lock_8h.html>`__

